异常是编写应用程序时, 没有代码和语法错误会出现的意外情况, 为了使程序出现异常还能按照预定的方式进行处理, 必须进行捕获和处理. java 提供了专门的异常处理机制.
常见的异常
如图所示, 当除数为 0 时, 出现算术错误
当遇到异常时, 我们可以使用异常处理代码块. 下列逐个介绍.
一, 异常处理代码块 try-catch-finally
1, 带参数的 try-catch
2, 不同异常作不同处理的 try-catch..catch
格式:
try{可能发生的异常代码}
catch(异常类 1 参数 1){异常处理代码 1}
catch(异常类 2 参数 2){异常处理代码 2}
...
catch(异常类 n 参数 n){异常处理代码 n}
程序运行时只执行匹配到的第一个 catch 子块, 不可能同时执行两个以上的子块
若没能捕获到异常只能有系统来处理, 将出现未处理异常信息
子块顺序只能从小到大排序, 最后一个总能捕获 Excption.
3, 不处理异常的 try-finally
finally 里的代码不管是否发生异常都是要执行
4, 完整的异常处理块 try-catch..catch-finally
二, throw 语句和 throws 语句
throw 语句语法形式如下
throw new 异常类构造方法名(参数列表);
throws 语句用法
可选 public 或 static 等 返回类型 方法名(可选参数) throws 异常类名{
自动或主动引发异常的方法体
- }
- package Yichang;
- import java.util.Scanner;
- public class Ex1 {
- static double divide(double x,double y)throws Exception{
- if(y!=0) {return x/y;}
- else {
- throw new Exception("除数为 0 无意义");
- }
- }
- public static void main(String[] args) {
- try {
- double x,y,z;
- String str;
- Scanner input=new Scanner(System.in);
- while(true) {
- System.out.println("请输入被除数");
- str =input.nextLine();
- if(str.equals("")) {break;}
- x=Double.parseDouble(str);
- System.out.println("请输入除数");
- str=input.nextLine();
- y=Double.parseDouble(str);
- z=divide(x,y);
- System.out.printf("相除结果保留两位小数:%.2f\n",z);
- }
- input.close();
- }catch(Exception e) {
- System.out.println("异常"+e);
- }
- finally {
- System.out.println("程序结束");
- }
- }
- }
显示异常: 除数为 0 无意义 -- 程序结束
三, 自定义异常类
- public MyException(){
- } // 自定义异常类
- throw new MyExceotion() // 抛出自定义异常
来源: http://www.bubuko.com/infodetail-2876631.html