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程序中抛出与声明异常

                                                                                         抛出异常上一篇文章中,...

深入理解java异常处理机制

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

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

java如何抛出异常 抛出异常使用throws/throw关键字。 throws关键字是什么 throws用来声明某一个方法可能抛出的异常,这个异常可以是系统定义的,也可以是自己定义的。 调用thro...

JAVA如何抛出异常

JAVA如何抛出异常  分享| 2011-07-07 13:54mengmeng2xiao | 浏览 49337 次  java 2011-07-07 13:59 ...

Java中自定义异常

/*下面做了归纳总结,欢迎批评指正*/ /*自定义异常*/ class ChushulingException extends Exception { public ChushulingExcep...
  • StellaAh
  • StellaAh
  • 2011年09月01日 10:24
  • 149572

Java中的Exception异常 自定义异常

Java基础笔记 – Java中的Exception异常 自定义异常 public class Exception extends Throwable Exceptio...

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

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

Java自定义异常理解

前言:看了许多博客和书,都对自定异常一笔带过,总让人感觉莫名奇妙,一直在问自己一个问题,我们能很好的解决异常就很不错了,为什么还要自己自定义异常,让自己去自找麻烦呢?后来我才理解自定义异常有自己的妙用...

Java自定义异常与异常使用最佳实践

异常的分类 1. 非运行时异常(Checked Exception)         Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常。 2. 运...

Java 异常(Exception)&自定义异常

一Java异常体系结构 java.lang.Object ----java.lang.Throwable --------java.lang.Exception ------------jav...
  • xyajia
  • xyajia
  • 2016年09月08日 15:47
  • 879
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java学习之自定义异常和抛出异常
举报原因:
原因补充:

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