黑马程序员技术交流社区

标题: 关于自定义异常。。【已解决】 [打印本页]

作者: 孙雪娇    时间: 2012-3-24 01:09
标题: 关于自定义异常。。【已解决】
本帖最后由 孙雪娇 于 2012-3-24 19:38 编辑

class FuShuException extends Exception{}
视频中说
可以extends Throwable
可以extends Error
那它们在定义的时候注意事项应该和Exception不同吧?
我看毕老师的视频,这里不太明白。写个例子就好了。。{:soso_e115:}

该贴已经同步到 孙雪娇的微博
作者: 庞子华    时间: 2012-3-24 01:27
错误更严重些!开发人员一般处理不了!比如内存溢出就是错误!而异常则是编译时出现的可以解决控制的
作者: 贠(yun)靖    时间: 2012-3-24 04:28
Erro  就是严重性的错误,连编译都编译不了的   比如说你的文件名字和类名不一样  比如说你没有类 只写函数 等等   就是说你写的代码根本不符合java的语法规则
  他都编译不了的  
而 Exception 分两种 一种是可处理的异常,一种是处理不了的     不可处理的比如RuntimeException      
例如  你要算一个加法运算 但是加数和被加数都是天文数字那么大的  超过了内存的大小了   内存都装不下的数据 这些数据就是处理不了的异常  而语法规则什么的都是对的,这中异常是需要让程序停止的  因为执行下去也没有意义了
   而可处理异常就是你自己可以处理或者调用者可以处理的异常。  
  而自定义异常  就是你定义一个异常类继承Exception    至于你想定义什么是异常 这个由你自己决定
  比如   class myException extends Exception
        {private String mes;
            myException(String mes)
           {super(mes);}
         }
class Person
{
  public static void main(String[] args)throws Exception
{
        if(a>0)                                                     我自己定义a不能大于零  大于零的话就报异常 自定义异常是根据需要而定的   
            throw new myException("a大于零了");
        a=a-10;
       System.out.println(a);
}
}
作者: 杨华威    时间: 2012-3-24 09:33
Exception和Error的区别:
Exception:
1.可以是可被控制(checked) 或不可控制的(unchecked)
2.表示一个由程序员导致的错误
3.应该在应用程序级被处理
Error:
1.总是不可控制的(unchecked)
2.经常用来用于表示系统错误或低层资源的错误
3.如何可能的话,应该在系统级被捕捉

下面是百度得到的解释:
Java 中定义了两类异常:
  1) Checked exception: 这类异常都是Exception的子类。异常的向上抛出机制进行处理,假如子类可能产生A异常,那么在父类中也必须throws A异常。可能导致的问题:代码效率低,耦合度过高。
  2) Unchecked exception: 这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是它们是非凡的,它们不能通过client code来试图解决,所以称为Unchecked exception

Java语言要求java程序中(无论是谁写的代码)所有抛出(throw)的异常都必须是从Throwable派生而来。当然,实际的Java编程中,由于JDK平台已经为我们设计好了非常丰富和完整的异常对象分类模型。因此,java程序员一般是不需要再重新定义自己的异常对象。而且即便是需要扩展自定义的异常对象,也往往会从Exception派生而来。所以,对于java程序员而言,它一般只需要在它的顶级函数中catch(Exception ex)就可以捕获出所有的异常对象。 所有异常对象的根基类是 Throwable ,Throwable从Object直接继承而来(这是java系统所强制要求的),并且它实现了 Serializable接口(这为所有的异常对象都能够轻松跨越Java组件系统做好了最充分的物质准备)。从Throwable直接派生出的异常类有Exception和Error 。Exception是java程序员所最熟悉的,它一般代表了真正实际意义上的异常对象的根基类。也即是说, Exception 和从它派生而来的所有异常都是应用程序能够catch到的,并且可以进行异常错误恢复处理的异常类型。而Error则表示Java系统中出现了一个非常严重的异常错误,并且这个错误可能是应用程序所不能恢复的,例如LinkageError ,或 ThreadDeath 等。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2