关于java异常类

小鬼_CHEN 2008-05-15 09:22:32
我是个刚刚学java没多久的人我想问下各位兄弟java异常类有那些特点
既然我们都把异常都已经列出来了为什么还需要用异常类呢??
我想不明白到底这样子用有什么好处,希望各位有经验的人的説下
小弟十分感激虽然分不是很多!在次感谢下!
...全文
537 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianglin543 2008-05-16
  • 打赏
  • 举报
回复
不好意思,错别字"以检查异常" 应该是"已检查异常"
jianglin543 2008-05-16
  • 打赏
  • 举报
回复
主要原因:JDK里包含了异常类,要是你不声明或者捕获以检查异常类,JDK会跟你过不去.
次要原因:1.当程序发生异常的时候,用异常处理可以使程序继续运行,不至于中断.
2.大部分用户都是呆头呆脑的,有时候因为它们的原因你的程序不能正常运行了,这时你应该用到异常来告诉用户到底出了什么事并安全的退出程序.
小鬼_CHEN 2008-05-16
  • 打赏
  • 举报
回复
呵呵清晰多了 谢谢各位热心人小弟不胜感激
呵呵
yuppy 2008-05-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 KKK2007 的回复:]
当程序发生异常的时候,用异常处理可以使程序继续运行,不至于中断
[/Quote]
manbaum 2008-05-15
  • 打赏
  • 举报
回复
从某种意义上看,异常机制是在面向对象的语言里实现了一丁点儿面向方面的机制。

13楼说的“异常用处主要是便于程序调试”听着别扭,应该说,异常可以被用来使得方便调试,
但异常并不是为了调试而产生的,异常的目的就是错误处理。

就像楼主说的,利用分支(if)来进行错误处理是最常见的方式,但问题是每个出错都必须立即
写一段if()来进行处理,这样,错误处理就散落在代码的各个角落里。当代码量很大,调用关系复杂时,
维护就很不方便方便,从而希望能把错误处理都集中起来,放在一段代码里统一处理,就出现了异常的需求。
manbaum 2008-05-15
  • 打赏
  • 举报
回复
看来不能用断网举例,弄得楼主真的断网了哦!哈哈
loujianchengdd 2008-05-15
  • 打赏
  • 举报
回复
异常用处主要是便于程序调试,减少运行时的错误,并且不影响程序正常运行。
假如,你用1/0这个时候就会抛出数学异常,你这个时候就大概能找到是哪里出了问题了。如果没有这个异常
的存在,那么你只知道程序出问题了,但是却很难找到是哪的问题,在加入NullPointerException,见到这个你就会知道一个对象没被初始化就用了
这样便于程序调试。

小鬼_CHEN 2008-05-15
  • 打赏
  • 举报
回复
今天块短网了 明天来继续
谢谢各位!
manbaum 2008-05-15
  • 打赏
  • 举报
回复
提醒用户网络断了或者其他用户能看的懂的消息吧
这样子和if不是差不多
------
1、异常在创建时本来就可以带有信息的,比如 new Exception("网络断了!"),和if没关系。
2、如何把异常转化为用户可读信息是另一个层面的问题,比如还涉及到国际化等等问题。
但这个和异常的作用本身没关系。
小鬼_CHEN 2008-05-15
  • 打赏
  • 举报
回复
希望各位能耐心点指点下我
我人比较笨
小鬼_CHEN 2008-05-15
  • 打赏
  • 举报
回复
谢谢各位 有一点明白了
7楼 那写个断网异常发生时总要提醒用户网络断了或者其他用户能看的懂的消息吧!
这样子和if不是差不多。最好那个能给我搜索点这方面的东西来越具体越好
当然如果你能把这个讲出来那就更好了o(∩_∩)o...
但是如果都用exception来抛出异常这样子就不知道具体什么东西出错了?
KKK2007 2008-05-15
  • 打赏
  • 举报
回复
当程序发生异常的时候,用异常处理可以使程序继续运行,不至于中断
manbaum 2008-05-15
  • 打赏
  • 举报
回复
就用网线断掉举例。

问题1:如果从网络读数据的的程序,从顶层到底层,完全都是你写的,那你当然可以用if来解决,
这种可能性太小!更多的情况是,你是调用了别人写的类里的方法,也就是说,你的代码里无法
实现去判断网线是否断掉,这些判断需要底层的支持,而底层代码是别人写好的,你无法修改,
这时候用if还能解决么?

问题2:反过来,如果让你去写一个网络读数据的类,在你的方法检查到了网络断掉的事实,你如何通知调用
这个方法的函数呢?你可以用返回值的不同情况来告诉调用者不同的出错情况,当在你的方法里又调用了
其他的方法,那你的返回值是不是要罗列出这些方法的出错码呢?如果这样设计程序,岂不是累死了?

异常有个很重要的特点就是“冒泡”,从异常发生的那一刻起,它就开始在调用堆栈里冒泡,只要没人抓它,
它就一直往上冒。这样,对于前面说的问题1和2,就都可以解决了。
对于问题1,不用if了,只要抓网络断掉的异常就行。对于问题2,不用返回值表示出错状态,出错了扔个异常,
调用者就收到了,对于你的方法里调用了其他方法产生了异常,你不抓它,它就自动冒泡给调用者了。
小鬼_CHEN 2008-05-15
  • 打赏
  • 举报
回复
各位 也许我学的不到家 呵呵请各位见谅
我的意思是你如果抛出个除0的异常
这个和用if(i==0)这样子
然后用了异常能有什么特点?
然后就是定义一个子异常的时候不就代表你已经知道了这里将产生一个异常那我也直接可以用if语句来完成对改错误的避免啊?
不知道现在説明白没有?
各位见谅。。。
evoloyeu 2008-05-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 anqini 的回复:]
没明白LZ的意思,什么叫已经列出来了还需要异常类呢?

异常不能算是错误,只是说出现你没有预想到的,你的行为有怀疑之处就会被一系列异常捕捉到的~!
[/Quote]
anqini 2008-05-15
  • 打赏
  • 举报
回复
没明白LZ的意思,什么叫已经列出来了还需要异常类呢?

异常不能算是错误,只是说出现你没有预想到的,你的行为有怀疑之处就会被一系列异常捕捉到的~!
小鬼_CHEN 2008-05-15
  • 打赏
  • 举报
回复
恩 那你写个异常类的时候不是也要写个关于网线断了这样子的异常类啊 我也可以用if这样子来完成
1楼的能不能説的更具体点
我指的是你写一个异常类不是代表一个异常吗?
比如説除0 啊 数组越界啊 这个写成异常和直接if有什么区别
写异常有什么特点!谢谢
老紫竹 2008-05-15
  • 打赏
  • 举报
回复
比如你在读取数据,你能预计到你的网线会断掉吗?

这就是最常见的异常
kevinchj 2008-05-15
  • 打赏
  • 举报
回复
1.纯理论上来说,异常处理仅花费很少的效率。
2.Java是纯面向对象语言,他的所有东西都可以说是对象,当然异常也不例外。
3.lz什么叫做可以把所有异常都列出来?还有自己定义的异常啊。
4.处理异常可以使程序更健壮,用异常类,便于管理异常,提高开发效率。

随便说点,不足之处还请海涵。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧