java中的异常处理---捕获异常或者抛出异常
2021-01-24 06:17
标签:fan super 选择 资源文件 ace 多个 格式 static 文件 一、java的异常体系 Throwable Error---错误。一般是由于jvm或者是硬件引发的问题,所以一般不会通过代码去处理,可以看下硬件或者外部对接系统或中间件等问题 Exception----异常,一般是代码中的问题,通过修改代码去解决 二、异常的处理方式 异常的捕获和异常的抛出 捕获异常: try{ 可能出问题的代码; }catch(出现的异常类型 自定义变量){ 处理异常的代码 } 如下代码: 注意事项: 1、try{....}catch(){...} 中代码如果出现了异常,程序不会阻塞,外面的程序会继续执行下去 2、try后面可以使用多个catch,处理多个类型的异常类型,但是第一个catch中异常类型的包含范围不能大于第二个catch中的类型(比如第一个catch异常类型是Exception,第二个catch中异常类型是ArithmeticException,Exception是一个总的 异常类,内部包括ArithmticException,这种情况下编译会报错) 3、如果try块中的代码出现了异常,则try中异常代码后面的语句将不会被执行 抛出异常: 关键字:throw throws 如上是当b = 0的时候对异常进行抛出的代码。。 那么什么时候使用异常的捕获,什么时候使用异常的抛出呢? --------一般情况下,如果需要通知到调用者你的代码出现了问题,这个时候使用抛出处理,如果代码是与用户直接打交道的异常,千万不能再抛,再抛会抛给用户了这个时候就使用捕获处理了 Exception中并不是包含了所有的异常类型,现实生活中还有许多的异常类型未被定义,这个时候我们可能需要自定义一些异常类型,去完成异常的处理; 举个例子:我要去吃一碗牛肉面,一万10块钱,当我钱不够的时候怎么办呢?这就相当于一种异常,我们需要事先定义一个异常类LessOfMoneyToEat 这种简单的写法其实就相当于自定义了一个异常类型,调用方法和其他异常类型调用方法是一样的: 异常处理的时候有时候会使用到finally关键字 fanally块:必须要有try才能使用 认识了finally代码块之后,常用到的异常捕获的格式其实会有三种: 第一种: 比较适用于有异常要处理,但是没有资源要释放的。 可能发生异常的代码 第二种:比较适用于既有异常要处理又要释放资源的代码。 可能发生异常的代码 第三种: 比较适用于内部抛出的是运行时异常,并且有资源要被释放。 可能发生异常的代码 java中的异常处理---捕获异常或者抛出异常 标签:fan super 选择 资源文件 ace 多个 格式 static 文件 原文地址:https://www.cnblogs.com/qkblogs/p/12868213.htmlpublic class ExcpetionDeal {
public static void main(String[] args){
div(4,0);
}
public static void div(int a,int b){
int result = 0;
try{
result = a/b; //这句代码在b = 0时明显不符合逻辑,可能会出现问题
}catch (ArithmeticException e){ //ArithmeticException是异常类型
e.printStackTrace(); //我们处理的方式就是打印出出问题的栈 } System.out.println("result:"+result);
}
}public class Throw {
public static void main(String[] args) throws Exception{ //main方法可以选择抛出异常给jvm或者对异常进行捕获处理
Div(4,0);
}
public static void Div(int a,int b) throws Exception{ //Div方法抛出异常给调用者main
if (b==0){
throw new Exception();
}
int result = a/b;
System.out.println(result);
}
}
public class LessOfMoneyToEat extends Exception { 定义一个异常类,继承自Exception类
public LessOfMoneyToEat(String message){ 定义一个都早方法传入一些信息
super(message);
}
}
ublic class Main {
public static void main(String[] args) throws LessOfMoneyToEat{ //直接抛出的写法
int money = 9;
/* 这里注释的写法是捕获的写法
try{
Eat(money);
}catch(LessOfMoneyToEat e){
e.printStackTrace();
System.out.println("借点钱吃个饭。。。");
}
*/
Eat(money);
}
public static void Eat(int money) throws LessOfMoneyToEat{
if(money
finally块中的代码在任何情况下都会执行的,除非退出java虚拟机
非常适合做释放资源的工作,这样子可以保证资源文件在任何情况下都被释放。。。
ry{
}catch(捕获的异常类型 变量名){
处理异常的代码
}
try{
}catch(捕获的异常类型 变量名){
处理异常的代码
}finally{
释放资源的代码;
}
try{
}finally{
释放资源的代码;
}
文章标题:java中的异常处理---捕获异常或者抛出异常
文章链接:http://soscw.com/index.php/essay/46217.html