java异常类基础入门_第1页
java异常类基础入门_第2页
java异常类基础入门_第3页
java异常类基础入门_第4页
java异常类基础入门_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1异常的基本概念异常:异常不是错误是程序中发生的不正常事

件流它的根类为Execption(Throwable)

Throwable下面包括Execption和error(错误);

异常分为:运行期异常和编译期异常;

一旦发生了异常,异常代码以后的语句不会再执行,直接退出程序为了保证即使出现

了异常,也不会让程序终止!(处理异常)

try{可能会出现异常的代码

}catch(异常类型异常对象)(

捕获异常

}catch(异常类型异常对象){

捕获异常

}……

finally(最终的执行语句,不管异常捕获与否都会去执行

)注意:不要随意将不相关的代码放到try块中,因为随时可能会中断执行。

捕获异常的时候尽量去捕获具体的异常信息

当有多个异常信息的时候必须把大的异常信息放在后面小的异常信息放在前面

pubicclassSimpleDateFormatDemo(

publicstaticvoidmain(String[]args)(test();

)

publicstaticvoidtest()(

〃创建时间对象

Datedate=newDate();

〃创建不同格式的时间

DateFormatdf=DateFormat.getlnstance();

DateFormatdf1=newSimpleDateFormat('yyyy-MM-ddHH:mm:ss

EE");

DateFormatdf2=

DateFormat.getDatelnstance(DateFormat.FULL,Locale.JAPAN);/俨生一个指定国家的日

期,长度不同,显示日期的完整性也不同

DateFormatdf3=newSimpleDateFormat("yyyy年MM月dd日HH时

mm分ss秒EE",Locale.CHINA);DateFormatdf4=newSimpleDateFormat("yyyy-MM-

dd)

System.out.println(*'java自带的显示方式:"+date);

System.out.println("§定义的模式显示:

"+dH.format(date));(“按照FULL时间模式显示:

H+df2.format(date));System.out,println("i$照区域为中国显示:

”+df3.foimat(date));("按照yyyy-MM-dd显示:

H+df4.format(date));

泛型:泛型的本质是参数化类型

泛型可加在类,接口,方法上面

在方法上使用泛型时必须是引用数据类型或者是封装类型

泛型可以在类的外部指明方法和参数的类型Date,java

packageday09;importjava.util.Date;

publicclassDateDemo(publicstaticDategetDate(){

returnnewDate();

}publicstaticvoidmain(String[]args)(Dated=getDate();

System.out.println(d);System,out.printin(d.geWateQ);

System.out.println(d.geWayQ);

Svstem.out.Drintin(d.getHouns());System.outDrintlnfd.:

System.out.println(d.get¥eapQ+1900):})

12SimpleDateFormat.javapackageday09;

importjava.text.DateFormat;importjava.text.ParseException;

importjava.text.SimpleDateFormat;importjava.util.Date;

importjava.util.Locale;publicclassSimpleDateFormatDemo(

publicstaticvoidmain(String[]args)throwsParseException(test();

)

publicstaticvoidtest()throwsParseException(

〃创建时间对象

Datedate=newDate();

〃创建不同格式的时间

DateFormatdf=DateFormat.getlnstance();

DateFormatdf1=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss

EE");

DateFormatdf2=

DateFormat.getDatelnstance(DateFormatFULL,Locale.JAPAN);〃产生一个指定国家的日

期,长度不同,显示日期的完整性也不同

DateFormatdf3=newSimpleDateFormatf'yyyy年MM月ddHHH时

mm分ss秒EE",Locale.CHINA);DateFormatdf4=newSimpleDateFormat("yyyy-MM-

dd“);

System.out.println(Hjava自带的显示方式:"+date);

System.outprintln(巧定义的模式显示:

”+dfl.format(date));(”按照FULL时间模式显示:

H+df2.format(date));System.out.println(*按照区域为中国显示:

"+df3.format(date));("按照yyyy-MM-dd显示:

H4-df4.format(date));/★★

*可将字符串转化为日期型*/

Stringstr="03-12-30下午2:24";Stringstrr="2008-08-0808:08:08星期

五”;

Datedatel=df.parse(str);〃将字符串转化为Date对象Datedate2=

df1.parse(strr);

System.out.println(datel);System.out.printlnidate2);

))

13Calendar.javapackageday09;

importjava.text.SimpleDateFormat;importjava.util.Calendar;

importjava.util.Date;importjava.utiLGregorianCalendar;

importjava.util.Locale;importjava.util.TimeZone;

publicclassCalendarDemo(

publicstaticvoidmain(String[]args)(test();

)

publicstaticvoidtest()(Calendarnow1=Calendar.getlnstance();

Calendarnow2=newGregorianCalendar();Calendarnow3=new

GregorianCalendar(2007,10,30);

Calendarnow4=newGregorianCalendar(2007,10,30,15,55);Calendar

now5=newGregorianCalendar(2017,02,16,14,56,44);

Calendarnow6=newGregorianCalendar(Locale.US);

Calendarnow7=new

GregorianCalendar(TimeZone.getTimeZone("GMT-8:00n));now2.setTime(newDate());

System.ouLprinlln(now2);

SimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月ddH");

System.out.println(sdf.format(now5.getTime()));

System.out.println(now5.get(Calendar.YEAR));System.out.println(now1.g

et(Calendar.MONTH)+1);

System.out.println(now5.get(Calendar.DAY_OF_MONTH));System.out.pr

intln(now5.get(Calendar.HOUR));

System.out.println(now5.get(Calendar.M

INUTE));System.out.println(now5.get(Calendar.SECOND));

System.out.println(now5.get(Calendar.AM_PM));System.out.println(now5.

get(Calendar.DAY_Or_WEEK));

Stringweek[]={二”日"“一“,“二三“,“四五”,“六}

System,out.printIn(week[now5.get(CaIendar.DAY_OF_WEEK)]);

14Math数学类packageday09;

publicclassMathDemo(

publicintmaxValue(intx,inty)(intmax=MathmQX(x,y);

returnmax;

)

publicdoubleduiS(doublea){

doubled=Math,Log(a);returnd;

)

publicstaticvoidmain(String[]args)(

System.out.println(newMathDemo().maxValue(50,5));

System.out.println(newMathDemo().duiS(Math.E));

})

15Random.javapackageday09;

importjava.util.Random;publicclassRandomDemo(

publicstaticvoidmain(String[]args){

Randomrand=newRandom();booleanflag=rand.nextBoolean();

System.out.println(flag);intnumber=rand.nextlnt(ll);

System.out.println(number);

))

17泛型FXdemo.java

packageday09;publicinterfaceFxdemo<T>(

voidgelFX(Tt);

Stringassume(Tt);Point.java

packageday09;publicclassPonit<T>{〃点

privateTx;

privateTy;publicTgetX()(returnx;

)publicvoidsetX(Tx)(this.x=x;

jpublicTgetY()(returny;

jpublicvoidsetY(Ty)(this.y=y;

jpublicbooleanadd(Ttl){return(boolean)tl;

)

publicvoidtest(Ponit<?>p){

System.ouf.println(p.getX());System.oi/Aprintln(p.getY());

})

FXD.java测试packagecom.chinasofti.eec.test;

importday09.Fxdemo;publicclassFXdimplementsFxdemo<lnteger>(

AOverridepublicvoidgetFX(lntegert)(System.out.printin(t);

)

AOverridepublicStringassume(lntegert){//TODOAuto-generatedmethodstub

return,,helloworldH;publicstaticvoidmain(String[]args)(Fxdemo<lnteger>fx=newFXd();

fx.getFX(IOO);

)}

输出100

Test.javapackagecom.chinasofti.eec.test;

importday09.Ponit;publicclassTest(publicstaticvoidmain(String[]args)(

Ponit<lnteger>p=newPonit<lnteger>();p.setX(10);p.setY(10);

Ponit(String>pl=newPonit<String>();pl.setX("1010n);pl.setY('10010H);

Ponit<Boolean>p2=newPonit<Boolean>();booleanflag=

p2.add(false);System.out.pnntln(pl.getX()+"======,'+pl.getY());

System.out.println(flag);Ponit<Object>p3=newPonit<Object>();

p3.setX(250);

p3.setY(250);Ponit<String>p4=newPonit<String>();p4.setX("helloM);

p4.setY("world");p3.test(p3);

p4.test(p4);输出

1010======10010false

250250helloworld

不建议直接捕获1hrowable因为它不仅仅包含异常还有error类所以一般使用

Expection;

throw和throws的区别:throw用于方法体中,用来抛出一个实际的异常对象throws

用于方法声明处,用来声明该方法可能发生的异

常类型,可以是多个异常类型,用来强制调用该方法时处理这些异常抽象方法也可以使用

throws

编译期异常:文件流异常运行期异常:超出下标

Catch任意捕获先运行后catch,如果没有catch直接从上往下

继承是单一的接口是多重的,实现完一个再去重写每个方法

继承一个类再实现一个接口先走finally再走return

Tran本身定义,自己定义自己Trycatch抛出危险抛给java虚拟机(Exception)

2trycatch名吉构packageday09;

publicclassExeceptionDemo(

publicstaticvoidexecptionTest()(intnuml=10;

intnum2=0;System•oi/t•printin("二二二二运彳亍前二二二二”);

try{System.out.println(numl/num2);〃此时程序没有正常

运仃)catch(ArithmeticExceptione)(

System,oi/t-println("除数不能为Osb");〃此时程序没有结束//e

•printStackTrace();

)System.out.printIn(“二二二二运彳亍后二二二二”);

)pubIicstaticvoidmain(String[]args)(execptionTestQ;

})

输出二二二二运行前二二二二

除数不能为。sb二二二二运彳了后二二二二

3Exception例子packageday09;

publicclassExeceptionDemo(

publicstaticvoidexecptionTest()(intnuml=10;

intnum2=0;System•oi/t,println("====运彳亍前二二二二”);

try(8ystem,out.println(numl/num2);〃此时程序没有正常

jfijj)catch(ArithmeticExceptione)(

System-oi/t-println("除数不能为。sb");〃此时程序没有结

//e.printStackTrace();)

System,out.println("====运行后二二二二“);

)

publicstaticvoidmain(String[]args)(execptionTestQ;

输出==运行前==

3:ibyzero

atdav09,ExeceDtionDemo2-execDtionTest(ExeceptionDemo2•iava:9)

atda,09-ExeceDtionDemo2-main(ExeceptionDemo2・iava:18)二二二二运行后

==4数学异常

packageday09;publicclassExeceptionDemo3{

publicstaticvoidexecptionTest()(intnuml=10;

intnum2=0;System•ot/t,println("=二==运彳亍前二=");

try{System.out.println(numl/num2);〃此时程序没有正常

X—Z—运仃

}catch(ArithmeticExceptione)(System.out.printIn("异常信息为:"+e);

)finally(System.out.println("不管怎么样我都会去执行”);

)System.out.println("====运行后====");

{publicstaticvoidmain(String[]args)(execptionTestO;

})

5自定义方法pubIicclassMyExcptionextendsException{

publicMyExcption(Stringmessage)(super(message);

})

6异常区域packageday09;

publicclassRunntimeExection(

publicstaticinttest(){inti=10;

int1;try{

System.out.println(j=i/0);System.out.println("异常区域”);

}catch(Exceptione)(System,ouAprintIn("捕获至IJ的异常");

returni;)finally(

System.out.printin(j=i/10);

System•out.printIn("最终执行”);

)

returni+100;

Jpublicstaticvoidmain(String[]args)(System.out.println(test());

))

输出捕获到的异常

1最终执行

107异常输出

importjava.util.lnputMismatchException;importjava.util.Scanner;

publicclassRunntimeExection2(

publicstaticvoidtest()(Scannerscan=newScanner(System.in);

System.out.printin('请输入一个数');intstr=0;

intnum=O;try{

str=scan.nextlnt();num=str/O;

}/*catch(Throwablee)(System.out.println(e);

}7catch(InputMismatchExceptione)(System.out.println(e);

)catch(ArithmeticExceptione)(System.out.println(e);

}catch(Exceptione)(System.out.println(e);

}("异常后执行”);

)

publicstaticvoidmain(String[]args)(输出

请输入一个数1

iava.IanR.ArithmeticException:;byzero异常后执行8抛出异常

packageday09;publicclassRunntimeExection3(

publicstaticvoidtest(booleanisThrow)throwsException{System.out,printm

(“进入test()");

try{if(isThrow)(

thrownewException("test()抛出异常");

)

System.out.println("test()抛出异常后的try的内容");}catch

(Exceptione)(

System.out.println(e);throwe;

)System.out.printin("异常后的信息”);

Jpublicstaticvoidmain(String[]args)throwsException{test(true);

)}

9finallypackageday09;

publicclassTest(

staticinttest()(intx=1;

try{returnx;

)finally(System,out.printlnCUIIir*);x=x+100;

)

)publicstaticvoidmain(String[]args)(

System•oi/t-printIn(Test-test());

})

10抛出区域packageday09;

publicclassThrowTest(

privateStringid="123”;

privatedoublebanlace;publicThrowTest(Stringid,doublebanlace)(this.id=id;

this.banlace=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论