目录
1-2 java中使用try...catch...finally实现异常处理
1-3java中通过案例学习ry...catch...finally
2-6Java 中的 StringBuilder 类的常用方法
3-6使用 Date 和 SimpleDateFormat 类表示时间
1-1java异常简介
一、概念
在 Java中,这种在程序运行时可能出现的一些错误称为异常。Java语言的异常处理机制优势之一就是可以将异常情况在方法调用中进行传递,通过传递可以将异常情况传递到合适的位置再进行处理, 这种机制类似于现实中发现了火灾,一个人是无 法扑灭大火的,那么可以将这种异常情况传递给119,119 再将这个情况传递给附近的消防队,消防队及时赶到并进行灭火。使用这种处理机制,使得Java语言的异常处理更加灵活,Java语言编写的项目更加稳定。当然,异常处理机制也存在一些弊端,例如,使用异常处理可能会降低程序的执行效率,增加语法复杂度等。
二、异常体系结构
1、所有异常都继承于Throwable类,其下有两大子类:
(1)Error类:错误,一般编程人员不太接触,如虚拟机错误、线程死锁。硬伤:使程序崩溃
(2)Exception类:异常,编码、环境、用户输入等问题,其子类主要有:
·非检查异常(运行时异常RuntimeException):【由java虚拟机自动捕获】如空指针NullPointer、越界ArrayIndexOutofBounds、错误类型转换ClassCast、算数异常Arithmetic等
·检查异常CheckException:【需要手动添加捕获和处理语句】文件异常IO等
1-2 java中使用try...catch...finally实现异常处理
其中,try代码块中是可能发生异常的Java代码;catch代码块在try代码块之后,用来激发被捕获的异常;finally代码块是异常处理结构的最后执行部分,无论程序是否发生异常,finally代码块中的代码都将执行,因此,在 finally 代码块中通常放置一些释放资源、关闭对象的代码。
通过try…catch 代码块的语法可知,捕获处理异常分为try….catch 代码块和 finally 代码块两部分
1-3java中通过案例学习ry...catch...finally
有时为了编程简单会忽略catch代码块后的代码,这样try…catch语句就成了一种摆设,一旦程序在运行过程中出现了异常,就会导致最终运行结果与期望的不一致,而错误发生的原因很难查找。因此要养成良好的编程习惯,最好在catch代码块中写入处理异常的代码。
虽然try代码块后面用了一个catch代码块来捕捉异常,但是遇到需要处理多种异常信息的情况时,可以在一个try代码后面多catch代码块。这里需要注意的是,如果使用多个catch 代码块,则catch 代码块中的异常类顺序是先子类后父类,因为父类的引用可以引用子类的对象。
终止执行,交由异常处理程序(抛出提醒或记录日志等),异常代码块外代码正常执行。
try会抛出很多种类型的异常,多个catch块捕获多钟错误。
多重异常处理代码块顺序问题:先子类再父类(顺序不对也会提醒错误),finally语句块处理最终将要执行的代码。
-----处理异常-----
try-catch 以及 try-catch-finally
catch顺序为从子类到父类
finally{
最终将要执行的一些代码
}
有错误情况下
如果finally块中有return语句,try语句 -> catch -> finally -> finally.return
如果finally块中没有return语句,try语句 -> catch -> finally -> catch.return
无错误情况下
如果finally{}块中有return语句,try语句 -> finally -> finally.return
如果finally{}块中没有return语句,try语句 -> finally -> try.return
return在try-catch-finally中:
1、不管有木有出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。1.e.printStackTrace()可以输出异常信息
2.-1为抛出异常的习惯写法
3.如果方法中try,catch,finally中没有返回语句,则会调用这三个语句块之外的return结果
4.finally块无论如何,不管前面是正常还是异常,都要执行。
5.finally 在try中的return之后 在返回主调函数之前执行。
实例代码如图所示:
运行结果如图所示:
1-5java中的异常抛出以及自定异常
Java 中的异常抛出
throw
throws 一 声明将要抛出何种类型的异常(声明)
public void 方法名(参数列表)
throws 异常列表{
//调用会抛出异常的方法或者: throw new Exception();
1-7java中异常链
package Foreachtest;
public class ListTest {
public static void main(String[] args) { //主函数
// TODO Auto-generated method stub
ListTest tct=new ListTest();
int result=tct.test();
System.out.println("test()方法,执行完毕!返回值为:"+result);
int result2=tct.test2();
System.out.println("我想大声告诉你!test2()执行完毕!!");
int result3=tct.test3();
System.out.println("我想大声告诉你!test3()执行完毕!!");
}
public int test(){
int divider=10;
int result=100;
try{
while(divider>-1){
divider--;
result=result+100/divider;
}
}catch(Exception e){
e.printStackTrace();
System.out.println("循环抛出异常了!!!");
}
return -1;
}
public int test2(){
int divider=10;
int result=100;
try{
while(divider>-1){
divider--;
result=result+100/divider;
}
} catch(Exception e){
e.printStackTrace();
Syst