关闭

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

标签: exception异常java
10250人阅读 评论(0) 收藏 举报
分类:

知识点:
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 个错误

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:174185次
    • 积分:2900
    • 等级:
    • 排名:第12701名
    • 原创:250篇
    • 转载:113篇
    • 译文:0篇
    • 评论:40条
    最新评论