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

原创 2016年06月01日 10:11:43

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

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

版权声明:本文为博主原创文章,欢迎转载。

JAVA程序中抛出与声明异常

                                                                                         抛出异常上一篇文章中,...
  • Hamber_Bao
  • Hamber_Bao
  • 2010年08月17日 23:56
  • 46757

JAVA如何抛出异常

JAVA如何抛出异常  分享| 2011-07-07 13:54mengmeng2xiao | 浏览 49337 次  java 2011-07-07 13:59 ...
  • evilcry2012
  • evilcry2012
  • 2016年04月12日 14:30
  • 4120

Java千百问_04异常处理(003)_如何抛出异常

java如何抛出异常 抛出异常使用throws/throw关键字。 throws关键字是什么 throws用来声明某一个方法可能抛出的异常,这个异常可以是系统定义的,也可以是自己定义的。 调用thro...
  • ooppookid
  • ooppookid
  • 2016年04月08日 22:41
  • 3543

Java 如何抛出异常、自定义异常

一、异常的抛出 1、定义 : 一个方法不处理这个异常,而是调用层次向上传递,谁调用这个方法,这个异常就由谁来处理。2、throw : 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可...
  • qq_18505715
  • qq_18505715
  • 2017年06月13日 23:18
  • 7291

Java手动直接抛出异常

int  i=2; if(i==2){  throw new RuntimeException(e);  //直接手动抛出异常 }
  • zyzn1425077119
  • zyzn1425077119
  • 2017年03月17日 16:16
  • 4536

Java中几种常见的异常抛出类的说明!!!!

这几天都在搞java代码,但是常常碰见未知的异常抛出错误,这里记录一下,方便日后的查看与总结: 1.常见的异常现象: 空指针异常类:NullPointerException 类型强制转换异常...
  • LiMing_0820
  • LiMing_0820
  • 2016年10月17日 16:38
  • 3630

深入理解java异常处理机制

1. 引子        try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中...
  • hguisu
  • hguisu
  • 2011年01月20日 18:44
  • 299415

关于Java抛出异常与处理异常的思考

一、异常处理的现状  印象里接触过的项目,在异常处理上都觉得欠缺妥当, 没有从全局上来考虑。于是大量的代码中可以看到  try{  ...  }catch(Exception ex){    ex.p...
  • chenlong220192
  • chenlong220192
  • 2015年06月26日 10:35
  • 1763

Java异常处理-----抛出处理

抛出处理 定义一个功能,进行除法运算例如(div(int x,int y))如果除数为0,进行处理。 功能内部不想处理,或者处理不了。就抛出使用throw new Exception(“除数...
  • duruiqi_fx
  • duruiqi_fx
  • 2016年07月24日 16:50
  • 10029

java异常处理之抛出异常

抛出处理定义一个功能,进行除法运算例如(div(int x,int y))如果除数为0,进行处理。 功能内部不想处理,或者处理不了。就抛出使用throw new Exception(“除数不能为0”)...
  • Code_legend
  • Code_legend
  • 2016年08月13日 22:20
  • 2293
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java学习之自定义异常和抛出异常
举报原因:
原因补充:

(最多只允许输入30个字)