java异常处理实践
来源:互联网 发布:官网敏特英语软件下载 编辑:程序博客网 时间:2024/05/16 15:43
最近看了android 系统代码里面有好多异常类,自己往往都是 try catch 然后打印。
虽然学校的时候对java很少了解,现在却乱的很,今天想看下具体原理:
梳理下自己的理解:
1 所有异常都是程序员可以选择的:
你可以选择 让编译器检查,也可以选择不让检查
比如:使用 runtimeexception 就可以跳过检查,也可以将 error和其他exception 进行异常转移到runtimeexception里来跳过检查。
我们可以拦截所有的异常,然后自己处理。只需 try catch 或者throws 然后进行以上两种方式转换,就可以避免程序无法继续进行的问题。如果不处理
就会向上,用java自带的处理机制来处理了。到时候是error就是error,是其他exception就是其他exception了。这两个都是会程序直接退出线程的。
2 自定义异常 :
先定义一个自定义异常类
class b extends Exception{
public b(String msg){
super(msg);
System.out.println("for test ,not afraid");
}
}
然后在一个地方对该异常类进行处理 如果没有处理这个异常的代码,那么这个异常将会被跑到最上层
被消耗掉。上层如果也没处理就会该怎么这就怎么这了。
class c
{
public int functions(int x,int y) throws b
{
if(y<0)
{
throw new b("您输入的不能为负数!");//抛出异常
}
if(y==0)
{
throw new b("您输入的不能为0!");
}
int m=x/y;
return m;
}
}
这样以后再用到这个 functions方法的时候就会抛出异常。
public class ad
{
public ad(){
System.out.println("父类构造方法");
}
public static void main(String[] args)
{
c n=new c();
//捕获异常
try
{
System.out.println("result:"+n.shang(1,-3));
}
catch(b yc)
{
System.out.println(yc.getMessage());
yc.printStackTrace();
}
}
}
class b extends Exception{
public b(String msg){
super(msg);
System.out.println("for test ,not afraid");
}
}
class c
{
public int shang(int x,int y) throws b
{
if(y<0)
{
throw new b("您输入的不能为负数!");//抛出异常
}
if(y==0)
{
throw new b("您输入的不能为0!");
}
int m=x/y;
return m;
}
}
3 如何设计自己的异常处理框架:
看下一个 模板:
在这个设计图中,AppRuntimeException是系统异常的基类,对外只抛出这个异常,这个异常可以由前端(客户端)接收处理,当异常发生时,客户端的相关组件捕获并处理这些异常,将"友好"的信息展示给客户。
在AppRuntimeException下层,有各种各样的异常和错误,最终都转译为AppRuntimeException,AppRuntimeException下面还可以设计一些别的子类异常,比如AppDAOException、OtherException等,这些都根据实际需要灵活处理。在往下就是如何将捕获的原始异常比如SQLException、HibernateException转换为更高级一点AppDAOException。
有关异常框架设计这方面公认比较好的就是Spring,Spring中的所有异常都可以用org.springframework.core.NestedRuntimeException来表示,并且该基类继承的是RuntimeException。Spring框架很庞大,因此设计了很多NestedRuntimeException的子类,还有异常转换的工具,这些都是非常优秀的设计思想。
异常的处理存在着一套哲学思想:对于一个应用系统来说,系统所发生的任何异常或者错误对操作用户来说都是系统"运行时"异常,都是这个应用系统内部的异常。这也是异常转译和应用系统异常框架设计的指导原则。在系统中大量处理非检查异常的负面影响很多,最重要的一个方面就是代码可读性降低,程序编写复杂,异常处理的代码也很苍白无力。因此,很有必要将这些检查异常Exception和错误Error转换为RuntimeException异常,让程序员根据情况来决定是否捕获和处理所发生的异常。
摘抄了好多文章合成了这个东西。现在仍然只是一知半解,等待以后实践验证和深化- java异常处理实践
- Java 异常处理实践
- Java异常处理手册和最佳实践
- java异常处理实践及总结
- Java异常处理的最佳实践
- java处理异常较好的实践
- 异常处理最佳实践
- 异常处理最佳实践
- 异常处理最佳实践
- 异常处理最佳实践
- java学习脚印: java异常处理机制及实践方法
- java初学者实践教程20-异常处理
- Java中关于异常处理的10个最佳实践
- Java 编程中异常处理的最佳实践
- Java 编程中异常处理的最佳实践
- Java中关于异常处理的十个最佳实践
- Java 编程中异常处理的最佳实践
- Java 编程中异常处理的最佳实践
- 在Ubuntu操作系统上安装mono和jexus搭建.NET的运行环境
- UDP协议TCP
- Java获取请求客户端的真实IP地址
- 自定义控件集
- 第十一堂课后作业
- java异常处理实践
- SWT美化开源控件网站
- XML中<beans>中属性概述
- Oracle中TO_DATE格式及其他日期函数
- 学习笔记
- 正则表示详细介绍
- objc 对时间的基本操作。取出时间
- 数据库进阶系列之一:漫谈数据库索引
- linux总结