`
ze_nana
  • 浏览: 52219 次
社区版块
存档分类
最新评论

异常(二)

 
阅读更多

 

1.异常的捕获和处理:

 

public class Try2
{
	public static void main(String args[]){
		int i=0;
		int a[]={5,6,7,8};
		for(i=0;i<5;i++){
			try
			{
				System.out.print("a["+i+"]/"+i+"="+(a[i]/i));
			}
			catch (ArrayIndexOutOfBoundsException e)//数组下表越界
			{
				System.out.print("捕获数组下标越界异常");
			}
			catch(ArithmeticException e)
			{
				System.out.print("捕获算数异常");
			}
			catch(Exception e)
			{
				System.out.print("捕获"+e.getMessage()+"异常");
			}
			finally
			{
				System.out.println(" i="+i);
			}
		}
		System.out.println("继续!");
	}
}
 

 

结果:

捕获算数异常 i=0

a[1]/1=6 i=1

a[2]/2=3 i=2

a[3]/3=2 i=3

捕获数组下标越界异常 i=4

继续!

 

 

 

2.求数组元素的平均值:

 

public class ArrayAverage2
{
	public static double average(int table[]){ //求数组元素平均值
		if(table!=null&&table.length!=0){
			double sum=0;
			for(int i=0;i<table.length;i++){
				sum+=table[i];
			}
			return sum/table.length;
		}
		return 0.0;
	}

	public static double average(int table1[],int table2[]){//计算两个数组的平均值
		int count=0;
		if(table1!=null&&table1.length!=0)
			count=table1.length;
		if(table2!=null&&table2.length!=0)
			count+=table2.length;
		if(count!=0)
			return(average(table1)*table1.length+average(table2)*table2.length)/count;
		else
			return 0.0;
	}

	public static int[] tointArray(String str[]){//获得字符串中的整数值
        if(str!=null&&str.length!=0){
			int temp[]=new int[str.length];
			int count=0;
			for(int i=0;i<str.length;i++){
				try
				{
					temp[count]=Integer.parseInt(str[i]);  
					count++;
				}
				catch (NumberFormatException e)
				{
					System.out.println("字符串"+str[i]+"不能转化为整数,产生异常类"+e.getClass().getName());
				}
			}
			int table[]=new int[count];
			System.arraycopy(temp,0,table,0,count);  //复制数组
			return table;
		}
		return null;
	}
	
	public static void print(int table[]){//输出数组元素
          if(table!=null){
			  System.out.print("数组元素为:");
			  for(int i=0;i<table.length;i++)
				  System.out.print(" "+table[i]);
			  System.out.println();
		  }
	}

	public static void main(String args[]){
		int x[]={1,2,3,4};
		int y[]={};
		System.out.println("average(x,y)="+average(x,y));

		y=tointArray(args);
		print(y);
		System.out.println("average(y)="+average(y));
	}


}
 

 

结果:

 

average(x,y)=2.

average(y)=0.0

 

3.抛出异常;

public class Person2
{
	protected String name;
	protected int age;
	public Person2(String name,int age) throws Exception  //构造方法声明抛出异常
	{
		//无法处理set()方法抛出的异常,再向上传递set()方法抛出的异常
         this.set(name);
		 this.set(age);
	}
	public void set(String name)
	{
		if(name==null||name=="")
			this.name="姓名未知";
		else
			this.name=name;
	}
	public void set(int age) throws Exception
	{
		if(age>=0&&age<100)
			this.age=age;
		else
			throw new Exception("IllegalAgeData"+age);
	}
	public void set(String name,int age) throws Exception
	{
		this.set(name);
		this.set(age);
	}
	public String toString()
	{
		return this.name+","+this.age+"岁";
	}
	public void print(){
	    System.out.println(this.toString());
	}
	public static void main(String args[]) throws Exception
	{
		Person2 p1=new Person2("李小明",20);
		p1.print();
		p1.set(121);
		p1.print();
	}
}
 

 

结果:

李小明,20岁

Exception in thread "main" java.lang.Exception: IllegalAgeData121

        at Person2.set(Person2.java:23)

        at Person2.main(Person2.java:41)

 

 

4.自定义异常类:

 

//声明自定义异常类只需要声明构造方法
public class IllegalAgeException extends Exception
{
    public IllegalAgeException(String s){
		super(s);
	}
	public IllegalAgeException(){
		this("");
	}
}
 

public class Person3
{
	protected String name;
	protected int age;
	public Person3(String name,int age) throws IllegalAgeException
	{
		this.set(name);
		this.set(age);
	}
	public void set(String name)
	{
		if(name==null||name=="")
			this.name="姓名未知";
		else
			this.name=name;
	}
	public void set(int age) throws IllegalAgeException
	{
		if(age>=0&&age<=100)
			this.age=age;
		else
			throw new IllegalAgeException(""+age);
	}

	public void print(){
	    System.out.println(this.name+","+this.age+"岁");
	}
	public static void main(String args[]){
		Person3 p1=null;
		try
		{
			p1=new Person3("李小明",20);
			p1.set(121);
		}
		catch (IllegalAgeException e) //捕获自定义异常类
		{
			e.printStackTrace();//显示异常栈跟踪信息
		}
		finally  //一定要执行的语句
		{
			p1.print(); 
		}
	}
}
 


 

 

  • 大小: 1.1 KB
分享到:
评论

相关推荐

    地磁异常二维反演与应用

    综上所述,地磁异常二维反演是地球物理学中一项应用广泛的先进技术,它通过对地磁异常数据的分析帮助我们理解地球内部的结构和物质组成。尽管存在一定的挑战和限制,但通过持续的技术进步和方法改进,这项技术在地质...

    sd.zip_gravity_球体重力_重力异常_重力异常正演_重力正演

    这里提到的“柱体和球体重力异常二维正演”意味着我们将探讨这两种几何形状的物体在二维空间内如何影响地表重力场。 球体和柱体是最常见的地质体模型,因为它们可以近似许多自然地质构造。球体模型常用于表示孤立的...

    java开发常见错误异常

    HTML 异常二:使用 `&lt;img&gt;` 标签引入图片,在浏览器页面图片不显示 在 HTML 中,使用 `&lt;img&gt;` 标签引入图片,但是浏览器页面图片不显示。解决方案是检查图片的路径是否正确,使用相对路径 `../img/1.jpg`,而不是...

    java 自定义异常实例二

    在Java编程语言中,异常处理是一项关键特性,它允许程序员优雅地处理程序运行时可能出现的错误情况。自定义异常是Java异常处理的一部分,允许我们创建符合特定业务需求的异常类。下面我们将深入探讨Java自定义异常...

    地球物理勘探二维板重磁异常正演

    二维板重磁异常是基于二读体板状模型的正演,是本科地球物理勘探相关专业领域的基础代码。本程序可进行二维板的重力异常正演和水平方向的磁异常正演和垂直方向的磁异常正演。

    KDD Cup 99 数据集异常检测,二分类

    经过处理后的数据集,如所提到的 KDD CPU99,已经适应了二分类问题,也就是异常检测,其中异常通常代表潜在的攻击或不寻常的行为。 数据集分为训练集和测试集,这在机器学习中是常见的做法。`kdd99_train.npy` 和 `...

    java throw抛出异常实例二

    在Java编程语言中,异常处理是一项关键特性,用于处理程序执行期间可能出现的错误或不正常情况。`throw`关键字在Java中被用来显式地抛出一个异常。当我们遇到一个预期之外的情况,或者某些条件不满足时,可以使用`...

    java throws声明异常实例二

    在这个“java throws声明异常实例二”中,我们将深入探讨`throws`关键字的使用以及它在实际编程中的应用。 首先,`throws`关键字用在方法签名的末尾,后面跟着一个或多个可能被该方法抛出的异常类。当方法在执行...

    java异常处理习题

    二、异常处理机制 * 异常是一种对象,继承自 `Throwable` 类。 * 异常处理的主要步骤是:抛出异常(throw) -&gt; 捕捉异常(catch) -&gt; 处理异常(finally)。 三、异常类的继承关系 * `Throwable` 是所有异常类的...

    Java-Web应用程序开发完整版课件全书电子讲义教材课件(完整).pptx

    Java 异常处理机制详解 Java 异常处理机制是 Java 语言提供的一套完善的机制,用于处理程序中的异常情况。异常是指程序运行期间出现的问题,...catch(NumberFormatException e2){// 处理出现的异常二类型的异常} ……

    C#异常处理总结及简单实例

    二、异常处理如何操作? C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。 1、try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。 2、catch:程序通过异常...

    异常处理一元二次方程

    利用如下方法计算一元二次方程的根,可以设计一个图形界面输入A,B,C值,点击“求解”按钮进行计算,结果显示在一个标签中。 注意代码的异常处理。

    XGBoost二分类问题,可扩展应用到故障诊断领域小样本数据的二分类问题或异常检测问题

    使用XGBoost解决机器学习二分类问题,数据集描述的是不同蘑菇的相关特征,如大小、颜色等多维特征,目的是诊断每一种蘑菇是有毒。...程序可扩展应用到故障诊断领域小样本数据的二分类问题或异常检测问题。

    实现一个求解一元二次方程的类,该类包含三个成员变量和一个求解一元二次方程解的函数,该函数需要抛出异常(1.无解的异常 2二次项系数为0的异常))

    此外,这个方法必须能够处理两种异常情况:一是方程无解,二是二次项系数 `a` 为0。 首先,我们来创建这个类,我们可以命名为 `QuadraticEquationSolver`。这个类需要三个私有成员变量,即 `a`, `b`, 和 `c`,它们...

    java异常机制小结

    Java 异常的对象来自两个来源:一是 Java 语言本身定义的一些基本异常类型,二是用户通过继承 Exception 类或者其子类自己定义的异常。异常的对象可以是 Java 运行时环境自动抛出的系统生成的异常,也可以是程序员...

    计算布格异常Fortran程序

    1. 读取地形数据:这通常涉及到从ASCII或二进制文件中读取高程信息,可能以网格或点的形式存在。 2. 计算地形的质量效应:根据地球重力模型,如地球椭球模型,计算每一点的地形对重力的贡献。 3. 读取自由空气异常...

    ADS异常处理.pptADS异常处理.pptADS异常处理.ppt

    二、异常处理流程 当异常发生时,ARM处理器遵循以下步骤: 1. 保存状态:将当前程序状态寄存器(CPSR)复制到对应的保存程序状态寄存器(SPSR)。 2. 模式切换:根据异常类型切换到相应的异常模式,如FIQ模式、IRQ...

    高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架

    二、异常的捕获和处理 Java 异常的捕获和处理是一个不容易把握的事情,如果处理不当,不但会让程序代码的可读性大大降低,而且导致系统性能低下,甚至引发一些难以发现的错误。Java 异常处理涉及到五个关键字,分别...

    最小二乘反演重力异常

    这篇文档将详细探讨最小二乘反演在处理重力异常数据中的应用及其在生成二维和三维图像上的过程。 首先,我们要理解什么是重力异常。地球的引力场并非均匀分布,由于地壳内部不同密度的岩石分布,导致某些地区的重力...

Global site tag (gtag.js) - Google Analytics