青岛网站建设东橙品牌设计,网站建设 开源,网站鼠标代码,百事通微信推广平台Java进阶之旅第八天 文章目录 Java进阶之旅第八天异常作用分类编译时异常运行时异常 异常的处理方式默认的处理方式自己处理(捕获异常) 异常的常见方法Throwable 的成员方法代码结果 异常的抛出处理throws和throw 自定义异常 异常
作用
自己写的代码在运行过程中发生某种错误…Java进阶之旅第八天 文章目录 Java进阶之旅第八天异常作用分类编译时异常运行时异常 异常的处理方式默认的处理方式自己处理(捕获异常) 异常的常见方法Throwable 的成员方法代码结果 异常的抛出处理throws和throw 自定义异常 异常
作用
自己写的代码在运行过程中发生某种错误,抛出的错误进行处理.使得自己能快速甄别错误信息对可能出现的问题进行封装,查询bug的关键参考信息
分类
编译时异常
1.继承自 Exception 类但不是继承自 RuntimeException 类。2.在代码中必须显式地处理或声明抛出编译时异常。3.编译时异常发生的地方必须处理该异常否则代码无法通过编译。4.编译时异常通常表示外部环境或资源的错误或异常情况需要在代码中明确处理以保证程序的健壮性和可靠性。
运行时异常
继承自 RuntimeException 类。在代码中可以选择性地处理或声明抛出运行时异常。运行时异常可以不被显式地捕获也不需要在方法签名中声明抛出。运行时异常通常表示程序逻辑的错误或异常情况如空指针异常、数组越界异常等。运行时异常一般由程序员编码错误导致需要通过代码的调试和修复来解决。
异常的处理方式
默认的处理方式
1.把异常的名称,异常的原因以及异常出现的位置等信息输出在控制台2.程序停止执行,下面的代码不会再执行了代码: System.out.println(2/0);错误: Exception in thread main java.lang.ArithmeticException: / by zero at Main.main(Main.java:5)
自己处理(捕获异常)
语法:try{可能出现异常的代码块}catch(异常类名 变量名){异常的处理代码}目的: 当代码出现异常时,可以让程序继续往下执行代码: try {System.out.println(2/0);}catch(ArithmeticException e){System.out.println(算术异常!);}System.out.println((程序没有被停止));结果:
算术异常!
程序没有被停止细节: 1.只有出现异常才会执行catch中的代码2.在出现多个问题时,可以写过个catch进行捕获处理3.当出现错误之后,会立即跳转到对应的catch中,并不再运行错误语句之后的代码4.如果要写父类接收错误(Exception),需要将其写到最后一个catch中5.在JDK7之后,我们可以在catch中同时捕获多个异常,中间用|隔开,在过个错误的处理方案一致时可以使用,例子: catch(ArithmeticException | ArrayIndexOutOfBoundsException e){}6.代码中遇到的问题没有catch处理,会使用默认方式处理
异常的常见方法
Throwable 的成员方法
方法名说明public String getMessage()返回此throwable的详细消息字符串public String toString()返回此可抛出的剪短描述public void printStackTrace()(常用把异常的错误信息输出在控制台(不会结束程序
代码 try {System.out.println(2/0);}catch(ArithmeticException e){System.out.println(e.getMessage());System.out.println(e.toString());e.printStackTrace();}System.out.println((程序没有被停止));结果
/ by zero
java.lang.ArithmeticException: / by zero
程序没有被停止
java.lang.ArithmeticException: / by zeroat Main.main(Main.java:7)异常的抛出处理
throws和throw
throws 注意: throws写在方法定义处,表示声明一个异常,告诉调用者,使用本方法可能会有哪些异常写法: public void 方法名() throws 异常类名1,异常类名2...{...}编译时的异常: 必须要写,运行时的异常: 可以不写 throw 注意: 写在方法内,结束方法,手动抛出异常对象,交给调用者方法中下面的代码不再执行写法: public void 方法名() {throw new NullPointerException();}
自定义异常 步骤 1.定义异常类(起名字技巧: 异常名Exception)2.写继承关系(编译时: Exception,运行时: RuntimeException)3.空参构造/有参构造(继承之后快捷键AltInsert,可以选择构造函数,重写前两个即可) 代码
public class NameException extends RuntimeException{public NameException() {}public NameException(String message) {super(message);}
}调用: 正常调用即可.例如: throw new NameException()