Java系列文章
第1章 绪论 第2章 结构化程序设计 第4章 数组、字符串、向量
提示:以下是本篇文章正文内容,下面案例可供参考
异常处理
一、介绍
什么是异常(Exception)?
异常是正常程序流程所不能处理或没有处理的异常情况或异常事件,也称为例外。
异常的分类
来源: Java异常的分类和类结构图
常见的异常
java常见的几种异常[通俗易懂]
二、异常处理中五个关键字
1.范例一
基础语句
try
{
}catch(ExceptionName e1)
{
}
Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。
举个栗子,使用其中四个关键字try、catch、finally、throw
public class J_ExceptionCatch
{
public static void main(String args[ ])
{
try
{
System.out.println("try语句块");
throw new Exception( );
}
catch(Exception e)
{
System.err.println("catch语句块");
e.printStackTrace( );
}
finally
{
System.out.println("finally语句块");
}
}
}
输出结果 如图 当catch语句块能捕捉到try语句块中抛出的异常 则try-catch-finally结构之后的代码会被执行,否则不会被执行 所以上图输出了“catch语句块”及输出异常的类型以及异常发生的方法调用堆栈跟踪信息
2.范例二
一个除数为0导致的异常
public class J_ExceptionCatchCase {
public static void main(String[] args) {
int a= 10;
int b = 0;
System.out.println("a=" + a);
System.out.println("b=" + b);
try
{
System.out.println("try语句块");
if(b==0)
throw new ArithmeticException(“除数不能为0”);
else
System.out.println("a/b=" + a/b);
}
catch(ArithmeticException e)
{
System.out.println("catch语句块");
System.out.println(e);
}
finally
{
System.out.println("finally语句块");
}
}
}
输出结果
3.要点
public class J_Test {
public static void mb_createException() {
throw new ArrayIndexOutOfBoundsException();
}
public static void mb_method()
{
try
{
mb_createException();
System.out.print("a");
}
catch(ArithmeticException e)
{
System.err.print("b");
}
finally
{
System.out.print("c");
}
System.out.print(“d”);
}
public static void main(String[] args) {
try
{
mb_method();
}
catch(Exception e)
{
System.err.print('m');
}
System.out.print(‘n’);
}
}
读者可以自己运行该类,看看输出与自己预期的是否一致 若不一致,则再仔细阅读上方要点
递归
一、介绍
如果在方法定义中直接或间接地调用该方法本身,就称为递归。
利用递归求解问题的基本思路:
(1)将要求解的原问题分解成规模较小的同类问题;
(2)将利用递归求解原问题转变成在分解之后产生的小规模同类问题上进行求解。
二、实例
问题范例
问题:求某个整数的Fibonacci数。 Fibonacci数的定义如下: Fibonacci(1)=1; Fibonacci(2)=1; Fibonacci(3)=Fibonacci(2)+Fibonacci(1); ……… Fibonacci(n)=Fibonacci(n-1)+Fibonacci(n-2); //n为大于2的整数
解决
public class J_Fibonacci
{
public static int mb_fibonacci(int n)
{
if (n< 1)
return(0);
else if (n==1 || n==2)
return(1);
return(mb_fibonacci(n-1)+mb_fibonacci(n-2));
}
public static void main(String args[ ])
{
int n = 30;
System.out.println("Fibonacci(" + n + ")=" + mb_fibonacci(n));
}
}
|