17.03.11 异常处理
来源:互联网 发布:抓娃娃机 知乎 编辑:程序博客网 时间:2024/05/22 02:08
一、一般结构
public class Test{try{//可能发生异常的代码块}catch(Exceptiontype e) {// 对Exception e的处理,Exception是异常变量类型,e是变量名}catch(Exceptiontype e2){// ……}Finally{//无论try中的代码如何退出,都将执行finally块}}
(1)处理过程:程序先执行try语句块,如果try语句块有异常,将执行catch语句块,执行完catch语句块后,直接执行后面语句,不会再执行try语句中异常后面的代码。
(2)catch中常用函数有(通过e.函数名调用):
getMessage():输出错误性质
toString():给出异常的类型与性质
printStackTrace():给出异常的类型、性质栈层次以及出现在程序的位置
(3)一般情况下,无论try中代码返回如何,都将执行finally语句块,以下情况,将不会执行finally语句块:
finally语句块发生异常
前面的代码使用System.exit()退出程序
程序所在线程死亡
关闭CPU
(4)关于多个catch的使用的说明:多个catch的关系类似“或”的关系,try捕捉到什么异常就跳转到对应的catch语句中(根据catch后面的参数决定),不会执行无关的catch异常;正因为如此,多个catch之间是有一定的顺序要求的:越是上层级的类,越要放到后面,如果上层级的异常类放到最前面,后面的具体类(子类)将永远执行不了。
二、自定义异常
自定义异常一般步骤:
(1)创建自定义异常类(继承Exception类),构造方法中继承父类构造方法,异常类的构造器可接受字符串作为参数,如:
public class MyException extends Exception() { //继承至Exception类 Public MyException(String ErroMessage){ Super(ErroMessage) //父类构造方法 }}
(2) 定义方法时候,通过throws抛出自定义异常(throws在方法参数后面);在方法中,通过throw关键字,抛出自定义异常对象
(3)通过try……catch处理异常
代码如下:
import java.util.Scanner;public class ExceptionTest {public static int avg (int m,int n) throws MyException{if(m>100||n>100){throw new MyException("m或n值超过100");}if(m<0||n<0){throw new MyException("m或n值小于0");}return (m+n)/2;}public static void main(String[] args){try{Scanner m=new Scanner(System.in);System.out.println("请输入第一个数");int a=m.nextInt();System.out.println("请输入第二个数");int b=m.nextInt();avg(a,b);}catch(MyException e){e.printStackTrace();}}}
三、在方法中抛出异常
某个方法发生异常,但不想在该方法中处理异常时,可以使用throws、throw抛出异常,
throws
throw
方法申明中,且位于参数括号后面,多个异常用逗号分隔
方法体中
抛出异常类(类似继承,后面直接加类名)
抛出为异常对象,throw的异常必须要用try……catch捕捉
四、异常的分类
error用来描述java运行系统内部的错误以及资源耗尽的错误,这类错误比较严重;
exception类称为非致命类,可通过捕捉,使程序继续执行。
五、异常使用原则
(1)在当前方法中,使用try……catch语句
(2)一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类
(3)如果父类抛出多个异常,那么子类继承至父类的的方法,抛出的异常必须是父类异常的一个子集
- 17.03.11 异常处理
- 11_Servlet 异常处理
- JavaSE 11 异常处理
- HeadFirstJava 11异常处理
- 11 异常处理
- [转]C++异常处理 11
- 【c++系列11】异常处理
- C++11异常处理 noexcept
- 11Spring MVC异常处理
- C++11异常处理 noexcept
- 异常处理+异常+处理异常+自定义异常
- Objective-C 编程语言(11)异常处理----使能异常处理、异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- 异常处理
- matlab 出现 调用 "function1" 时,未对输出参数 "average" (可能还包括其他参数)赋值
- 初步认识UI开发---六种布局及其属性
- iOS之对象复制
- VS Code 使用
- Spring-04--Spring属性配置细节
- 17.03.11 异常处理
- ONVIF
- 产品经理类
- 拆装箱
- java web项目部署到tomcat服务器(一般步骤和自己所犯错误的总结)————高手忽略
- Ubuntu16.04任务栏与启动器消失
- leetcode240. Search a 2D Matrix II
- 利用java.nio.charset.CharsetDecoder自动识别字符集
- Windows环境下mysql 5.7.16安装