黑马程序员-异常类

------- android培训java培训、期待与您交流! ----------

1.      异常:就是程序在运行时出现的不正常情况。

2.      对问题的分析:

①.             严重的问题:java通过error类进行描述,对于error一般不编写针对性代码对其进行处理。

②.             不严重的问题:java通过Exception类进行描述,对于Exception,可以使用针对性的处理方式来进行处理。

不论error还是Exception,他们都具有一些共性:

不如不正常即【异常情况信息】,引发原因等。

Example:

                     Java.lang.throwable

                     -------error

                     -------Exception

即java的throwable下面有连个类error和Exception。而throwable定义了Error和Exception的一些共性内容.

3.      异常处理:

Java提供了特殊的语句来进行异常处理:

try

{

要检测的代码块;

}

Catch(异常类变量)

{

       处理异常的代码块;

}

Finally

{

       一定会执行的语句;

}

其中try,catch,finally几种组合情况:

①.Try{}

Catch(异常类变量){}

②.try{}finally{}

③.try{} catch(){} catch(){}………..

4.      封装的异常情况:

①.Java中许多异常被封装,比如runtimeException中的ArithmeticException,ArrayOutOfBoundsException等等。

②.而RuntimeException中的异常可以抛出,不用再函数上申明,或者申明,不抛出,编译都不会出错。

class ArithmeticException extendsException{} /* ,ArithmeticException类是被封装好的。*/

class Alog{

       intdiv(int a,int b)

{

              returna/b;

       }

}

public class Test001 {

       publicstatic void main(String[] args)

       {     Alog a = new Alog();

              try

              {

                     intx=a.div(6, 0);

/*被测试的代码,如果上面发现异常,在转回来,然后跳转到catch(Exception e)处理*/

                     System.out.println("x="+x);

              }

              catch(Exceptione)

              {

                     System.out.println("byzero!");

                     System.out.println(e.getMessage());

                     System.out.println(e.toString());

                     //e.printStackTrace();

              }

       }

}

5.自定义异常:

①.因为项目中会出现特有的问题,而这些问题并未被java所描述并封装对象。

所以对于这些特有的问题可以按照java的对问题封装的思想。

将特有的问题。进行自定义的异常封装。

②.需求:在本程序中,对于除数是-1,也视为是错误的是无法进行运算的。

那么就需要对这个问题进行自定义的描述。

 

③.当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。

要么在内部try catch处理。

要么在函数上声明让调用者处理。一般情况在,函数内出现异常,函数上需要声明。

 

④.父类中已经把异常信息的操作都完成了。所以子类只要在构造时,将异常信息传递给父类通过super语句。那么就可以直接通过getMessage方法获取自定义的异常信息。

 

⑤.自定义异常:

必须是自定义类继承Exception。

继承Exception原因:

异常体系有一个特点:因为异常类和异常对象都被抛出。

他们都具备可抛性。这个可抛性是Throwable这个体系中独有特点。

只有这个体系中的类和对象才可以被throws和throw操作。

⑥.throws和throw的区别

throws使用在函数上。throw使用在函数内。

throws后面跟的异常类。可以跟多个。用逗号隔开。

throw后跟的是异常对象。

class FuShuException extends Exception//getMessage();

{

       privateint value;

 

       FuShuException()

       {

              super();

       }

       FuShuException(Stringmsg,int value)

       {

              super(msg);

              this.value= value;

       }

 

       publicint getValue()

       {

              returnvalue;

       }

 

}

class Demo

{

       intdiv(int a,int b)throws FuShuException

       {

              if(b<0)

                     thrownew FuShuException("出现了除数是负数的情况------ / by fushu",b);//手动通过throw关键字抛出一个自定义异常对象。

 

              returna/b;

       }

}

 

 

class ExceptionDemo3

{

       publicstatic void main(String[] args)

       {

              Demod = new Demo();

              try

              {

                     intx = d.div(4,-9);

                     System.out.println("x="+x);        

              }

              catch(FuShuException e)

              {

                     System.out.println(e.toString());

                     //System.out.println("除数出现负数了");

                     System.out.println("错误的负数是:"+e.getValue());

              }

                     System.out.println("over");

 

       }

}

 

/*

class Throwable

{

       privateString message;

       Throwable(Stringmessage)

       {

              this.message= message;

       }

 

       publicString getMessage()

       {

              returnmessage;

       }

}

 

class Exception extends Throwable

{

       Exception(Stringmessage)

       {

              super(message);

       }

}

 

 

class Person

{

       Stringname;

       Person(Stringname)

       {

              this.name= name;

       }

       publicString getName()

       {

              returnname;

              }

}

 

class Student extends Person

{

       Student(String name)

       {

              super(name);

       }

}

 

new Sttdent("lisi").getName();

5.      异常的继承问题:

 

异常在子父类覆盖中的体现;

①.子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。

②.如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。

③.如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。

       如果子类方法发生了异常。就必须要进行try处理。绝对不能抛。

 

class AException extends Exception

{

}

 

class BException extends AException

{

}

 

class CException extends Exception

{

}

 

/*

Exception

       |--AException

              |--BException

       |--CException

*/

class Fu

{

       voidshow()throws AException

       {

              }

}

 

class Test

{

       voidfunction(Fu f)

       {

              try

              {

                     f.show();

              }

              catch(AException e)

              {

 

              }

             

       }

}

 

 

class Zi extends Fu

{

       voidshow()throws CException

       {

             

       }

}

 

 

class 

{

       publicstatic void main(String[] args)

       {

              Testt = new Test();

              t.function(newZi());

       }

}

最后做一个总结:

1.      异常情况关键要分清两种情况:

①.封装函数异常类:java.lang.throwable中封装了许多异常类,可以调用java虚拟机进行处理。

自定义异常类:自定义异常类必须继承父类,之所以自定义类,是为了更好的了解出错原因。增强程序的可读性。

2.      异常中finally的作用是关资源,就是一个程序执行完毕后,不管是不是出错,那么这个程序所占的资源必须关闭。而finally所在代码块是必须运行的类,所以用来关资源。

3.      一个程序如果在函数上有:throws 异常类名 那么在调用者中必须进行try{} catch(){}进行处理。如果不想进行处理,而程序用能通过编译,那么自定义异常类必须继承RuntimeException类,因为RuntimeException类具有一个特点:只抛,只申明,编译都能通过,所以该类继承RuntimeException类,而没有申明,那么就没有try{}catch(){}

故而就不能处理。

例如:一个正方形求他的面积,边长为负即为异常。

我们认为传值为负时,那么这个正方形就没有构造成功,故而程序可以直接结束,而不需要try{} catch(){},也不需要调用面积,那么就必须要自定义类继承RuntimeException类,在函数上不用申明,而在内部抛出,程序就直接结束,下面的代码块都不处理了。

------- android培训java培训、期待与您交流! ----------

 详情请查看:http://edu.csdn.net/heima

 

智慧工地解决方案旨在通过信息化手段提高建筑行业的监管水平和施工企业的管理效率。该方案响应了国家“十二五”规划中提出的全面提高行业信息化水平的要求,通过建立统一的建筑施工安全生产监管信息平台,解决政府监管部门面临的监管难题,如环境复杂、人员复杂、施工地点分散等。同时,它也帮助建筑企业应对劳动力流动大、成本上升、劳务纠纷等问题,通过信息化手段提升施工质量和安全管理。 智慧工地的整体思路是通过信息化建设,为政府职能部门提供监管手段,为施工企业提供管理支撑。这包括视频监控、实名制考勤、人员定位和免费WIFI上网等模块。视频监控系统能够实时监控工地现场,确保施工进度和安全;实名制考勤系统则确保合法用工,提高劳务管理的效率;人员定位系统有助于追踪工地人员,增强安全管理;免费WIFI上网则为工人提供娱乐和信息获取的途径,提高生活质量。 该方案的实施,不仅降低了政府的监管成本,提高了监管效率,还帮助建筑企业实时了解施工现场的安全和污染情况,掌握施工进度,降低管理成本,提升施工质量。此外,外来务工人员也能享受到信息化带来的便利,如通过智能终端免费上网,享受健康娱乐方式。 智慧工地项目的优势在于其专业的团队和丰富的实施经验。项目团队整合了全方位的资源,打造了行业信息化解决方案,并提供了个性化的行业信息化应用定制。此外,项目还依托于专业的运营团队和丰富的运营经验,提供了通信类系统和IT系统维护等服务外包。 最后,智慧工地项目通过政府牵头、企业投资、资源共享的合作模式,实现了普惠于民的目标。例如,武清区建委智慧工地项目通过视频监控和手机考勤系统,规范了建筑市场秩序,为保证工程质量奠定了基础,同时有效降低了监管成本,提高了建筑工地突发事件的应急处置能力。这种合作模式不仅提升了建筑行业的整体效率,也为构建美丽城市和实现中国梦做出了贡献。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值