`
accphc
  • 浏览: 124556 次
  • 性别: Icon_minigender_1
  • 来自: CD
社区版块
存档分类
最新评论

老掉牙的话题,java的异常处理。

阅读更多

关于系统中的异常怎么处理,之前也看过很多的文章。只是觉得越看越糊涂,大家持很多不同的意见。

现在想形成一套自己的观点,合自己口味的解决方案。没有对与不对,因人而宜。

 

DataAccessException extends RuntimeException  Dao层异常

ServiceException extends RuntimeException   Service层异常

我被java的RuntimeException和Exception的使用一直弄得头晕。
现在的观点是,把Exception转化成RuntimeException,省的方法还throws,个人觉得的throws看起来不爽,呵呵。
这就相当于在自己写代码过程中放弃了使用Exception。减少烦恼

但是有些自己写的工具类当中又是怎么处理呢。抛还是不抛(通过返回值),抛什么?

 

欢迎大家发表下意见,批评改正。

 

分享到:
评论
8 楼 qianhd 2011-03-17  
carlkkx 写道
我认为关于Checked exceptions 已经尘埃落定,结论就是:Checked exceptions是失败的设计。C#放弃这个不是没有道理的。


如果eclipse的默认处理 是throws exception 而不是try catch
那对于不懂的开发人员 也就不会随意的压制异常

设计是好的 完全可以通过方法声明看出 这个方法调用是否可能会抛出异常
但是过于学院派 实用型差点
7 楼 kevin1988620 2011-03-17  
我的处理的原则是,只捕捉checkexception,而忽略RuntimeException。
RuntimeExcepton的产生是程序员的责任,如配置文件写错,空指针引用等。应该是避免这样的异常发生,而不是发生后捕捉处理它。
CheckedException是程序员无法避免的,比如用户的非法输入,非法点击等。这样的异常既然没办法避免,就只能等它发生后再捕捉。

但是现在jdk设置了太多的checkexception,它们中很多都可以归类于RuntimeException的,导致程序中大量出现大量的try,catch,而catch后又不知道怎么处理,简单的打印一下,其实这样的异常处理没有任何意义,但又不得不如此,比较悲剧。
6 楼 xichao007521 2011-03-17  
我的做法是定义两类异常,DaoException,BizException,然后利用AOP将DAO层和Biz层的异常捕获然后转化为自定的两类异常,然后往上抛。
这样开发人员不过多需要考虑异常了,代码也会整洁很多
5 楼 carlkkx 2011-03-17  
我认为关于Checked exceptions 已经尘埃落定,结论就是:Checked exceptions是失败的设计。C#放弃这个不是没有道理的。
4 楼 carlkkx 2011-03-17  
Checked exceptions 显然已经是失败的设计。
异常的抛出者不应该强迫调用者处理异常,因为你不能决定谁来处理你。这明显是武断的。
而且这种强迫还导致很多人乱吞异常,就像qianhd所描述的那样。

事实我们只有需要一种方便的描述我可能抛出的异常,但不是编译级别的强迫。
3 楼 qianhd 2011-03-17  
异常要抛给有能力处理这个异常的handler
但是这个道理很多人不懂 所以经常会压制异常
随便try catch一下 然后连打印都不打印
与其让不懂的人搞乱异常机制
还不如用runtimeException 然后再需要的地方 或者有能力处理的地方统一的catch一下
2 楼 IcyFenix 2011-03-16  
checked exception有没有必要确实是一个很老的话题了,曾经巨牛级的人物在上面发生过很大的争论。在小规模的程序中,确实能用得很优雅,但是大规模程序往往就会沦为鸡肋。

在spring的Mission Statement中,就有这样一句:

Checked exceptions are overused in Java. A platform shouldn't force you to catch exceptions you're unlikely to be able to recover from.
1 楼 sandssss 2011-03-16  
对于自己的Util这样的方法,我自己一般是都是把异常catch到,然后return一个默认的空值(null,或者0这样的)

相关推荐

    JavaReport-V3-Enterprise-Released.rar

    前几天要搞一个老掉牙的SSH项目,缺少了这个插件。全网去找,好不容易找到。放到WEB-INF/lib目录,发现不会自动引入,手动引入后,调用java report的程序不报错,但服务器出现放频繁出现it is not java class的错误...

    JAVA经典算法各种排序算法

    老掉牙 河內塔 費式數列 巴斯卡三角形 三色棋 老鼠走迷官(一) 老鼠走迷官(二) 騎士走棋盤 八個皇后 八枚銀幣 生命遊戲 字串核對 雙色、三色河內塔 背包問題(Knapsack Problem) 數、運算 蒙地...

    第二期:RIP高级,老掉牙的协议?其实没想象的那么简单.pptx

    RIP高级,老掉牙的协议?其实没想象的那么简单,资深华为讲师为你讲解rip协议

    JavaReport-V3-Enterprise-Released.jar

    前几天要搞一个老掉牙的SSH项目,缺少了这个插件。全网去找,好不容易找到。放到WEB-INF/lib目录,发现不会自动引入,手动引入后,调用java report的程序不报错,但服务器出现放频繁出现it is not java class的错误...

    pascal语言教程,老掉牙了,不过很不好找

    尽管它在现代编程中可能显得“老掉牙”,但Pascal在计算机科学教育领域曾扮演着重要的角色,对后来的编程语言如C、C++和Java产生了深远影响。这个“古董”教程可能对初学者或历史爱好者具有一定的价值。 Pascal的...

    老掉牙的lynx for win32

    尽管"老掉牙的lynx for win32"这个标题暗示这是一款较旧的版本,对于那些需要在Windows环境下运行命令行浏览器或者进行网页抓取、自动化任务的人来说,Lynx仍然是一个有用的工具。 Lynx的主要特点和优势在于: 1. *...

    C和JAVA经典算法.rar

    老掉牙 河內塔 費式數列 巴斯卡三角形 三色棋 老鼠走迷官(一) 老鼠走迷官(二) 騎士走棋盤 八個皇后 八枚銀幣 生命遊戲 字串核對 雙色、三色河內塔 背包問題(Knapsack Problem) 數、運算 蒙地...

    Java和C语言实现各种经典算法(含代码图例)

    老掉牙 河内塔 费式数列 巴斯卡三角形 三色棋 老鼠走迷官(一) 老鼠走迷官(二) 骑士走棋盘 八个皇后 八枚银币 生命游戏 字串核对 双色、三色河内塔 背包问题(Knapsack Problem) 数、运算 蒙地...

    c语言经典算法包括老掉牙,汉诺塔,三色旗

    老掉牙 河内塔 巴式数列 巴斯卡三角形 三色棋 老鼠走迷官(一) 老鼠走迷官(二) 骑士走棋盘 八个皇后 八枚银币 生命游戏 字串核对 双色、三色河内塔 背包问题(Knapsack Problem) 数、运算 蒙地卡罗法...

    一个老掉牙的故事作文.doc

    这篇文档实际上是一个关于亲情和爱情的故事,虽然标题和描述中没有明确的IT相关知识点,但从故事中我们可以引申出一些普遍的人生智慧和情感理解,这些也是人们在IT行业中经常需要处理的情感层面: 1. **习惯与依赖...

    老掉牙的问题:二叉树的遍历

    二叉树的三种遍历的递归和非递归方法,语言种类,C++,如果有不足的地方,请与作者联系,谢谢。

    SmaliInjector20170719

    dex2jar 的步骤使用的是 google 自家的 enjarify 工具,没使用老掉牙的、对部分混淆apk处理极不准确极不稳定的 dex2jar(d2j) 5). jar2dex 使用的是 android studio 自带的 dx.bat 工具,貌似 dex2jar(d2j) 在做jar...

    数据结构与算法

    老掉牙 河内塔 费式数列 巴斯卡三角形 三色棋 老鼠走迷官(一) 老鼠走迷官(二) 骑士走棋盘 八个皇后 八枚银币 生命游戏 字串核对 双色、三色河内塔 背包问题(Knapsack Problem) 数、运算 蒙地...

    ACM经典算法 代码+详解

    老掉牙 河內塔 費式數列 巴斯卡三角形 三色棋 老鼠走迷官(一) 老鼠走迷官(二) 騎士走棋盤 八個皇后 八枚銀幣 生命遊戲 字串核對 雙色、三色河內塔 背包問題(Knapsack Problem) 數、運算 蒙地...

    Delphi Cmdshell 线程注入、文件释放程序

    内容索引:Delphi源码,系统相关,线程注入 这是个老掉牙的话题了,运行后AVP狂报,NOD32没反应,不过策略简直太牛了,主要实现了线程注入、文件释放、添加自启等一些常规手段来表现,作者是锦屏中学初二(10)班 王臻,...

    C语言经典算法大全.pdf

    老掉牙 河内塔 费式数列 巴斯卡三角形 三色棋 老鼠走迷官(一) 老鼠走迷官(二) 骑士走棋盘 八个皇后 八枚银币 生命游戏 字串核对 双色 三色河内塔 背包问题(Knapsack Problem) 数 运算 蒙地卡...

    LunchtimeBoredom:我在整个大三的午餐时间编写的代码。 常规编程问题和一些有趣的东西。 新项目即将推出新的存储库!

    随时为项目提出建议,解决同类问题很快就会老掉牙。 另外,这个神秘的“ GUI”是什么意思? 控制台文本是必经之路! 注意:maze.txt文件与SearchAlgorithms.java一起使用。 它只是一个示例文件,可以更改,但是...

    sdl推箱子源码和资源.zip_SDL游戏源码_sdl 游戏_sdl游戏_推箱子

    这个压缩包包含了一个基本的游戏实现,但描述中提到是“一个老掉牙的小小小游戏,只是半个成品”,意味着这可能是一个早期版本或未完成的项目。 在标签中,“sdl游戏源码”、“sdl_游戏”和“sdl游戏”都是与SDL...

Global site tag (gtag.js) - Google Analytics