Java学习之自定义异常和抛出异常

本文详细介绍了Java中异常处理的基本概念,包括throws和throw的区别,try-catch-finally组合的使用注意事项,以及如何创建并使用自定义异常类型。通过实例演示了如何在方法中抛出异常并捕获处理,强调了自定义异常在代码稳定性和维护结构上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知识点:
1.throws是在定义方法时候抛出异常,throw是在方法体内抛出异常
2.try{}catch(Exception e){}finally{}这是一个比较常见的组合

使用try-catch-finally组合注意点:
• 当不存在catch语句时,finally 语句必须存在并且紧跟在try语句后面。
• 在try语句和catch语句间不能存在任何语句,同样在catch语句和finally语句中也不能存在任何语句 ,这地方的语句不包括注释语句。
• 当不存在catch语句时,finally语句必须存在并且紧跟在 try语句后面。在try语句和catch语句间不能存在任何语句。

自定义异常类型
MyException.java

public class MyException extends Exception
{
  public MyException()
  {

  }
  public MyException(String s)
  {
        super(s);
  }

}

写一个可能抛出异常的方法
ExceptionClass.java

public class ExceptionClass
{
  public String setNumber(int number) throws MyException
    {
        if(number >= 0 && number <=100)
        {
            return "正常";
        }
        else
        {
            throw new MyException("输入错误");
        }
    }

}

调用该方法
MainClass.java

public class MainClass
{
   public static void main (String args[])
    {
        try{
            ExceptionClass exception = new ExceptionClass();
            //设置0-100范围数字
            String s = exception.setNumber(90);
            System.out.println(s);
        }
        catch(MyException e)
        {
            System.out.println("异常信息为:"+e.getMessage());
        }
    }
}

依次分别编译上面的三个文件

$: javac -d . MyException.java
$: javac -d . ExceptionClass.java
$: javac -d . MainClass.java

运行MainClass.class

java MainClass

输出

正常

这时候我们修改MainClass.java的源代码,setNumber传入参数110,让setNumber方法抛出异常

String s = exception.setNumber(110);

再次变异运行

$: javac -d . MainClass.java
java MainClass

输出

异常信息为:输入错误

如果我们修改MainClass.java的源码,去除try{}catch{}如下:

MainClass.java

public class MainClass
{
   public static void main (String args[])
    {
            ExceptionClass exception = new ExceptionClass();
            //设置0-100范围数字
            String s = exception.setNumber(110);
            System.out.println(s);
    }
}

我们再次编译时候会出现如下警告

MainClass.java:7: 错误: 未报告的异常错误MyException; 必须对其进行捕获或声明以便抛出
            String s = exception.setNumber(110);
                                          ^
1 个错误

系统会对于可能出现异常的语句进行检查,如果有异常就会编译失败。所以自定异常也是很好的检测代码稳定性和维护结构的方式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值