------- android培训、java培训、期待与您交流! ----------
异常:
异常:就是程序在运行时出现不正常情况。
异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述。并封装成对象。其
实就是java对不正常情况进行描述后的对象体现。
异常的处理:
try
{
//需要被检测的代码;
}
catch(异常类变量)
{
//处理异常的代码;(处理方式)
}
finally
{
//一定会执行的语句;
}
当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。
要么在内部try catch处理。
要么在函数上声明让调用者处理。
一般情况在,函数内出现异常,函数上需要声明。
对于异常分两种:
1、编译时被检测的异常
2、编译时不被检测的异常(运行时异常。RuntimeException以及其子类)
Finally的使用:一般在finally中回收一些资源,比如数据库连接的关闭、IO文件
流的通道关闭、临时变量的指针回收等等操作。唯一存有疑问的可能就是finally
的执行时机。到底是在return之前还是之后,实际上如果一个try块存在return了,
那么如果这段try块有相应的finally的话那么return操作先挂起,之后执行finally中
的代码,如果finally代码块没有return,或者其他影响try块的语句的话,那么执行
完finally代码段之后再执行return语句。什么情况下finally中会影响try中的return
执行呢?就是finally中也存在着return语句,或者System.exit(0);这种系统级关闭
的语句。
finally代码块:定义一定执行的代码。通常用于关闭资源。
try
{
}
catch ()
{
}
或
try
{
}
catch ()
{
}
finally
{
}
又或者
try
{
}
finally
{
}
异常练习:try catch finally练习
class LessThanZeroException extends Exception
{
public LessThanZeroException(String s)
{
super(s);
}
public LessThanZeroException()
{
this("");
}
}
public class Mult1
{
protected double result;
public void Mult1(double result)throws LessThanZeroException
{
this.set(result);
}
public void set(double result) throws LessThanZeroException
{
if(result<0)
throw new LessThanZeroException(""+result);
}
public static void main(String args[])
{
double m=4;
double n=0.2;
double result=m*n;
try
{
if(result<0) {
throw new LessThanZeroException();
}
}
catch(LessThanZeroException e)
{
System.out.println("产生乘积小于0异常!");
}
finally
{
System.out.println("乘积为"+result);
}
}
}
------- android培训、 java培训、期待与您交流! ----------