Java学习总结:18
认识异常
异常是程序中导致程序中断的一种指令流。
例:产生异常
package com.study.Demo;public class Test1 {public static void main(String args[]){System.out.println("1.除法计算开始");System.out.println("2.除法计算:"+(10/0)); //此处产生异常//产生异常并且没有正确处理之后,异常之后的语句将不再执行System.out.println("3.除法计算结束");}
}
//结果
//1.除法计算开始
//Exception in thread "main" java.lang.ArithmeticException: / by zero
// at com.study.Demo.Test1.main(Test1.java:6)
为了让程序在出现异常后仍能正常执行完毕,必须引入异常处理语句来完善代码编写。
处理异常
Java针对异常处理提供了3个核心的关键字:try、catch、finally。
格式:
try{
//有可能出现异常的语句
}[catch(异常类型 对象){//异常处理;
}catch(异常类型 对象){//异常处理;
}catch(异常类型 对象){//异常处理;
}...][finally{;不管是否出现异常,都统一执行的代码
}]
注意:finally块是可以省略的,如果省略了finally块不写,则在catch()块运行结束后,程序将继续向下执行。
例:应用异常处理格式
package com.study.Demo;public class Test2 {public static void main(String args[]){System.out.println("1.除法计算开始");try {System.out.println("2.除法计算:"+(10/0));//异常产生之后的语句将不再执行,此处在try中产生异常,所以下面的输出不会执行System.out.println("666");}catch (ArithmeticException e){ //处理算术异常System.out.println("***出现异常***");}System.out.println("3.除法计算结束");}
}
//结果
//1.除法计算开始
//***出现异常***
//3.除法计算结束
例:输出异常的完整信息
package com.study.Demo;public class Test2 {public static void main(String args[]){System.out.println("1.除法计算开始");try {System.out.println("2.除法计算:"+(10/0)); //此处产生异常//异常产生之后的语句将不再执行,此处在try中产生异常,所以下面的输出不会执行System.out.println("666");}catch (ArithmeticException e){ //处理算术异常e.printStackTrace(); //输出异常的完整信息}System.out.println("3.除法计算结束");}
}
//结果
//1.除法计算开始
//3.除法计算结束
//java.lang.ArithmeticException: / by zero
// at com.study.Demo.Test2.main(Test2.java:7)
例:使用finally
package com.study.Demo;public class Test2 {public static void main(String args[]){System.out.println("1.除法计算开始");try {int x=Integer.parseInt(args[0]); //接收参数并且转型int y=Integer.parseInt(args[1]); //接收参数并且转型System.out.println("2.除法计算:"+(x/y)); //此处产生异常//异常产生之后的语句将不再执行,此处在try中产生异常,所以下面的输出不会执行System.out.println("666");}catch (ArithmeticException e){ //处理算术异常e.printStackTrace(); //输出异常的完整信息}finally {System.out.println("不管是否出现异常我都执行!");}System.out.println("3.除法计算结束");}
}
//结果
//1.除法计算开始
//不管是否出现异常我都执行!
//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: //Index 0 out of bounds for length 0
// at com.study.Demo.Test2.main(Test2.java:7)
由于上程序只处理了算术异常(catch (ArithmeticException e)),所以当出现其他异常后,程序依然无法处理,会中断执行。
例:加入多个catch进行异常处理
package com.study.Demo;public class Test2 {public static void main(String args[]){System.out.println("1.除法计算开始");try {int x=Integer.parseInt(args[0]); //接收参数并且转型int y=Integer.parseInt(args[1]); //接收参数并且转型System.out.println("2.除法计算:"+(x/y)); //此处产生异常//异常产生之后的语句将不再执行,此处在try中产生异常,所以下面的输出不会执行System.out.println("666");}catch (ArithmeticException e){ //处理算术异常e.printStackTrace(); //输出异常的完整信息}catch (NumberFormatException e){e.printStackTrace();}catch (ArrayIndexOutOfBoundsException e){e.printStackTrace();} finally {System.out.println("不管是否出现异常我都执行!");}System.out.println("3.除法计算结束");}
}
//结果
//1.除法计算开始
//不管是否出现异常我都执行!
//3.除法计算结束
//java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
// at com.study.Demo.Test2.main(Test2.java:7)
异常的处理流程
通过这两个异常类可以发现所有的异常类型最高的继承类是Throwable,并且在Throwable下还有两个子类。
Error:指的是JVM错误,这时的程序并没有执行,无法处理;
Exception:指的是程序运行中产生的异常,用户可以使用异常处理格式处理。
例:使用Exception处理异常
package com.study.Demo;public class Test2 {public static void main(String args[]){System.out.println("1.除法计算开始");try {int x=Integer.parseInt(args[0]); //接收参数并且转型int y=Integer.parseInt(args[1]); //接收参数并且转型System.out.println("2.除法计算:"+(x/y)); //此处产生异常//异常产生之后的语句将不再执行,此处在try中产生异常,所以下面的输出不会执行System.out.println("666");}catch (Exception e) { //处理所有的异常类型e.printStackTrace();} finally {System.out.println("不管是否出现异常我都执行!");}System.out.println("3.除法计算结束");}
}
//结果
//1.除法计算开始
//不管是否出现异常我都执行!
//3.除法计算结束
//java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
// at com.study.Demo.Test2.main(Test2.java:7)
上程序的异常使用Exception进行处理,这样不管程序中出现了何种异常问题,程序都可以捕获处理。
注意:处理多个异常时,捕获范围小的异常要放在捕获范围大的异常之前处理。
按照继承的关系来看ArithmeticException一定是Exception的子类,所以在编写异常处理时,Exception的处理一定要写在ArithmeticException处理之后,否则将出现语法错误。
例:错误的异常捕获顺序
package com.study.Demo;public class Test2 {public static void main(String args[]){System.out.println("1.除法计算开始");try {int x=Integer.parseInt(args[0]); //接收参数并且转型int y=Integer.parseInt(args[1]); //接收参数并且转型System.out.println("2.除法计算:"+(x/y)); //此处产生异常//异常产生之后的语句将不再执行,此处在try中产生异常,所以下面的输出不会执行System.out.println("666");}catch (Exception e){ //已经处理完所有的异常类型e.printStackTrace();}catch (ArithmeticException e){ //此处无法处理,Exception已处理完e.printStackTrace(); //输出异常的完整信息} finally {System.out.println("不管是否出现异常我都执行!");}System.out.println("3.除法计算结束");}
}
//结果
//Error:(15, 9) java: 已捕获到异常错误java.lang.ArithmeticException
相关文章:

java从字符串中提取数字
1、做一下操作时会一般会用到提取数字操纵: a、列表中有翻页,当新添加的数据不是放在第一条或者最后一条时,需要翻页并循环找到对应的那条数据 b、当新添加的数据放在第一条或者最后一条时,则不需要翻页,只需要直接进入…

2022-2028年中国联合办公行业深度调研及投资前景预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国联合办公行行业市场行业相关概述、中国联合办公行行业市场行业运行环境、分析了中国联合办…

iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)【转】
iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pre)还是后生成(post)。 Oracle设置 Xml代码 <!-- Oracle SEQUENCE --> <insert id"insertProduct-ORACLE" parameterClass"com.domain.Product&quo…

微信小程序----调用用户信息
在对应的文件夹里面的js里面添加代码,例如:index.js 代码开始/// onLoad: function () {var that this// 查看是否授权wx.getSetting({success(res) {if (res.authSetting[scope.userInfo]) {// 已经授权,可以直接调用 getUserInfo 获取头像…

在Blender中创建真实的汽车CGI视觉动画效果
Blender VFX Tutorial Rig & Animate a Realistic Car in Real 大小:1.18G 时长1h 包含项目文件 1280X720 MP4 语言:英语中英文字幕(根据原英文字幕机译更准确) Blender VFX教程绑定&动画真实的汽车 云桥网络 平台获取教程…

Java学习总结:19
throws关键字 throws关键字主要在方法定义上使用,表示此方法中不进行异常的处理,而是交给被调用处处理。 例:使用throws package com.study.Demo;class MyMath{public static int div(int x,int y)throws Exception{ //此方法不处理异常re…

C语言访问网页
一、理论 http://www.zixue7.com/thread-3860-1-1.html转载于:https://www.cnblogs.com/274914765qq/p/4996433.html

禅道Docker安装包发布
禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版: /dl/zentao/docker/docker_zentao.zip 备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROO…

获取指定日期之间的各个周和月
2019独角兽企业重金招聘Python工程师标准>>> 日志格式化类 Date.class.php <?php class Datefmt{function __construct() {}/*** 根据指定日期获取所在周的起始时间和结束时间*/public function get_weekinfo_by_date($date) {$idx strftime("%u", s…

nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping
今天mybatis报了个错误 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{propertyInfoId, modeIN, javaTypeclass java.lang.Long, jdbcTypenull, numericSca…

Revit和Unreal Engine真实的建筑可视化视频教程
Revit和Unreal Engine真实的建筑可视化视频教程 Lynda – Revit and Unreal Engine: Real-Life Architectural Visualizations Lynda–Revit和Unreal Engine:真实的建筑可视化 时长 3小时 25分 | 1.15 GB |含项目练习文件|使用的软件:Revit,…

Java学习总结:20
可变参数 语法形式: [public | protected | private][static][final][abstract] 返回值类型 方法名称(参数类型...变量){[return[返回值];] }例:使用可变参数定义方法 package com.study.Demo;public class Test6 {public static void main(String ar…

Axure 全局辅助线(转)
普通辅助线作用于当前页 全局作用于所有页面 , 包括新建页面 创建普通辅助线直接拉出来 创建全局辅助线 , 在拉出来的时候按住 Ctrl 默认情况下 , 颜色不同 辅助线可以多选 , 用拖选 或 按 ctrl 多选 多选后可以批量锁定等 转自:链接转载于:https://www.cnblogs.com…

2022-2028年中国帘子布行业市场研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国帘子布行业市场行业相关概述、中国帘子布行业市场行业运行环境、分析了中国帘子布行业市场…

查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究
原文:查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究查询在应用程序运行得很慢, 但在SSMS运行得很快的原因探究 -理解性能疑点 1 引言 内容来自http://www.sommarskog.se/query-plan-mysteries.html(Slow in the Application,…

Spring Boot 2.X 实现文件上传(三)
使用 SpringBoot 项目完成单个、多个文件的上传处理,并将上传的文件保存到指定目录下。 代码演示案例 所有的 HTML 页面文件 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>选…

Blender灯光照明与渲染视频教程 Skillshare – Blender: Product rendering for beginners
Blender灯光照明与渲染视频教程 Skillshare – Blender: Product rendering for beginners Skillshare – Blender: Product rendering for beginners 教程大小:2.2G 共33小节课 1920X1080 mp4视频 语言:英语中文字幕 在这门课程中,你将了…

Java学习总结:21
泛型 泛型的引出 例:向下转型的错误示范 package Project.Study.Genericity;class Point{ //定义坐标类private Object x; //可以保存任意数据private Object y; //可以保存任意数据public Object getX() {return x;}public Object getY() {return y;}pu…

Lab模式的妙用--人像处理
其实就是: 1.复制明度图层到RGB模式,降低透明度。 2.仿制图章磨皮 3.液化 4.可选颜色润饰皮肤。 转载于:https://www.cnblogs.com/wensu/p/4997579.html

springboot整合swagger2之最佳实践
来源:https://blog.lqdev.cn/2018/07/21/springboot/chapter-ten/ Swagger是一款RESTful接口的文档在线自动生成、功能测试功能框架。 一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,加上swagger-ui,可以有很好的…

转:动态链接库的全局变量问题
动态链接库的全局变量问题 请问动态链接库被外部多次调用时,每次调用中动态库自身的全局变量都会重新初始化吗?如果会那怎么来使我每次调用动态库时都能从上次的状态开始执行呢? 你这个问题得分被调用的是同一个进程还是不同的进程。如果是不…

排名前 16 的 Java 工具类
转载来自微信公众号:Java 技术栈。如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类。以下工具类、方法按使用流行度排名…

c4d教程-太空火车站场景创作视频教程Skillshare – Create A Space Train Scene With Cinema 4D Redshift Render
c4d教程-太空火车站场景创作视频教程Skillshare – Create A Space Train Scene With Cinema 4D & Redshift Render 教程大小 1.66G 共15小节 1280X720 mp4 视频 语言:英语中文字幕 百度一下 云桥网络 平台huo取 教程! Skillshare – Create A Spa…

Java学习总结:23
前言:断更挺久了,今天把之前的补上 Annotation 3种最为常用的Annotation定义,Override、Deprecated和SuppressWarnings 1.准确的覆写:Override 当进行方法覆写时,为了保证子类所覆写的方法的确是父类中定义过的方法…

Windows Live Writer发布测试
通过Windows Live Writer发布文章测试!!!! 转载于:https://www.cnblogs.com/passerlee/p/5000567.html

2022-2028年中国锂电池用聚烯烃隔膜行业市场发展调研及投资方向分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国锂电池用聚烯烃隔膜行业市场行业相关概述、中国锂电池用聚烯烃隔膜行业市场行业运行环境、…

【莫队算法】bzoj3781 小B的询问
莫队经典。 开个数组维护a[i]出现的次数。 1 #include<cstdio>2 #include<cmath>3 #include<algorithm>4 using namespace std;5 int Num,CH[12],f,c;6 inline void R(int &x){7 c0;f1;8 for(;c<0||c>9;cgetchar())if(c-)f-1;9 for(x0…

计算机为什么需要十六进制?
我们知道内存是按照字节粒度来寻址的,因此采用的数字系统必须很好的表达一个字节,也就是8比特,从这个角度上看256进制(2^8)是最好的,因为一个256进制就是表达一个字节,但还是基于可读性的原因,256进制对于人类来说记忆负担过重,而16进制则刚刚好,一个16进制数字表示一个字节的一半(4个比特),两个16进制数字正好表示一个字节。每个十六进制中的数字代表4个比特,你可以非常直观的从十六进制中知道对应的二进制是啥,比如给定一个十六进制数,假设其最后一位是9,那为什么十六进制是二进制的好朋友呢?

JAVA 自定义函数式编程
2.2)定义接口 void testInterface(String str);2.定义一个普通接口(TestInterface.java) 2.1)类上注明为函数式接口有且只能有一个方法;

7.1.1 [Enterprise Library]缓存应用程序块场景和目标
缓存应用程序块为解决开发人员在缓存数据时所面对的绝大多数任务而设计。这些任务根据场景进行了组织,每个场景都给出了一个真实世界情况的示例,如添加条目到缓存,讨论了情况所需要的缓存功能,并展示了完成任务的代码。 根据场景组…