Java中异常的基本应用(一)

  在Java中,我们把异常当做一种对象来处理,正是异常机制的引入,使得我们的程序更加健壮。异常指示了一个不正常的条件,或者一个错误条件,简单地说就是一个中断了正常的指令流的事件。程序控制将无条件的抛至一个特定的代码段,在此将捕获异常并加以处理,由此将错误处理与程序的正常处理分离开来,错误就可以被单独处理了。

  异常由Exception类及其子类的实例表示,大多数包都定义了自己的异常类型,它们往往是Exception的子类,我们也可以自己定义异常的类型。当错误条件出现时,应有一段代码用来创建异常对象。Exception对象要作为一个参数传递给负责处理的代码块,这就涉及到异常的抛出和捕获。

  如图所示,可抛出的除了异常还有错误类。Error类通常指示一些重大的错误或者虚拟机错误,不应由程序捕获。至于异常则分为两类,分别是运行时异常和编译时异常,或者可以叫做unchecked异常和checked异常。我们通常会遇到的IO异常和SQL异常都属于checked异常,对于这种异常,编译器要求我们必须对其进行处理。而runtime exception则可以不作处理,由虚拟机来接管。

  出现异常时,要么直接处理,要么向上抛出,等待上层调用方法进行处理。如果始终没有得到处理,那么如果是多线程就由Thread.run()抛出,如果是单线程就由main()抛出,之后相应的线程或整个程序退出。Runtime Exception和Error都可以不做处理,因此程序在遇到此类错误时,如果没有处理块程序就会终止退出。

  异常的处理方式:

  1、try-catch-finally结构处理异常

try{
    //正常代码,包含可能出错的代码
    //如果有return,先走finally再回来return
}catch(异常类型 Exception e){
    //异常处理    
}finally{
  //finally块,无论程序是否出现异常都会运行
  //异常的出口
}

  2、暂不处理,向上抛出

  throw用于手动抛出异常(系统无法识别的异常),throws进行声明,用于说明方法有可能发成的错误类型,调用该方法时进行try-catch处理。如果不声明,就需要在方法内进行try-catch处理。
  

public void setAge(int age) throws Exception{
    if(age>=15&&age<=40){
        this.age=age;
    }else{
        throw new Exception("年龄必须在15到40之间!");
    }

  该例在调用setAge方法时,进行try-catch处理,或者继续向上抛出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来回答你的问题。 Java异常处理是一个非常重要的概念,它可以帮助我们更好地处理代码可能出现的错误情况,从而使我们的程序更加健壮。 在Java,有两种类型的异常:Checked Exception和Unchecked Exception。其,Checked Exception必须在代码显式地声明和处理,否则编译器会报错。而Unchecked Exception则不需要声明和处理,可以直接抛出。 当Java程序运行时,如果遇到了异常,它会自动抛出一个异常对象。我们可以通过try-catch语句来捕获并处理这些异常。如果我们想要抛出自己定义的异常,可以通过自定义异常类来实现。 下面是一个Java自定义异常类的示例代码: ```java public class MyException extends Exception { public MyException(String message) { super(message); } } ``` 在上面的代码,我们定义了一个名为MyException的自定义异常类,它继承自JavaException类。通过继承Exception类,我们可以获得异常处理的一些基本功能,例如getMessage()方法来获取异常信息。 在MyException,我们还定义了一个构造方法,它接受一个字符串参数message,并将其传递给父类的构造方法。 下面是一个Java抛出异常与自定义异常类的应用示例代码: ```java public class Test { public static void main(String[] args) { try { int result = divide(10, 0); System.out.println(result); } catch (MyException e) { System.out.println(e.getMessage()); } } public static int divide(int x, int y) throws MyException { if (y == 0) { throw new MyException("除数不能为0"); } return x / y; } } ``` 在上面的代码,我们定义了一个名为Test的类,其包含了一个divide()方法和一个main()方法。 在divide()方法,我们判断了除数是否为0,如果是,就抛出一个MyException异常。 在main()方法,我们调用了divide()方法,并通过try-catch语句来捕获并处理可能抛出的MyException异常。 总之,Java异常处理是一个非常重要的概念,自定义异常类可以帮助我们更好地处理代码可能出现的错误情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值