目录
前言
程序运行的时候,经常会发生各种错误。
比如,使用Excel的时候,它有时候会报错:
本章我们讨论如何在Java程序中处理各种异常情况。
提示:以下是本篇文章正文内容,下面案例可供参考
一、三种异常
1.检查性异常:
最具代表检查性异常是用户错误输入错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件时,异常就发生了,这些异常在编译时不能被简单的忽略。
2.运行时异常:
运行时异常可能是被程序员避免的异常。与检查异常相反,运行时异常在编译时可以被忽略。
3.错误(Error):
错误不是异常,而是脱离程序员控制的问题。错误在代码中常被忽略。例如:当栈溢出时,一个错误就发生了,它们在编译也是检查不到的。
二、异常
一、Error和Exception的区别
Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,JVM一般会选择终止线程,Exception通常情况下时可以被程序处理的,并且在程序中尽可能的去处理这些异常。
二、异常分析(先和简单的异常打个照面)
异常处理的五个关键字:try catch finally throw throws
try,catch,finally
int a = 1;
int b = 0;
System.out.println(a/b);
这时会出现异常:
我们来解决一下这个异常:
int a = 1;
int b = 0;
try{//try代码块为监控区域
System.out.println(a/b);
}catch (ArithmeticException e){//catch代码块进行异常捕获,e为捕获的异常,可以多写几个
//catch实现多个异常的捕获
System.out.println("程序出现了异常,b不能为0");
}finally {//异常处理后的工作
System.out.println("这是finally");
}
再运行一下发现程序不报异常了:
选中监控区域代码,Ctrl+Alt+t快捷键写try,catch
throw抛出一个异常
public void test(int a, int b) {
if(b==0)//throw和throws是不一样的
throw new ArithmeticException();//抛出一个异常
}
我们并没有输出a/b,但我们抛出了一个异常,运行结果是:
自定义异常:
使用java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常,用户自定义异常,只需要继承Exception类即可。
自定义异常类:
package com.lixiaolong.www;
public class demo01 extends Exception{
//传递数字,如果数字大于10就有异常
private int detail;
public demo01(int a){
this.detail=a;
}
//重写父类的tostring异常
@Override
public String toString() {
return "demo01{" +
"detail=" + detail +"数值过大"+
'}';
}
}
写一个测试:
package com.lixiaolong.www;
public class test01 {
public static void main(String[] args) {
try {
test(11);
} catch (com.lixiaolong.www.demo01 demo01) {
System.out.println("==>"+demo01);
}
}
static void test(int a) throws demo01 {//抛出,抛到外面方法中
System.out.println("传递的参数为:"+a);
if(a>10) {
throw new demo01(a);//调用demo01类的异常
}
System.out.println("输出");
}
}
看一下输出: