关于Catch块的一些问题

原创 2006年06月15日 13:40:00

使用 Try/Catch 块捕捉异常

将可能引发异常的代码节放在 Try 块中,而将处理异常的代码放在 Catch 块中。Catch 块是一系列以关键字 catch 开头的语句,语句后跟异常类型和要执行的操作。
下面的代码示例使用 Try/Catch 块捕捉可能的异常。Main 方法包含带有 StreamReader 语句的 Try 块,该语句打开名为 data.txt 的数据文件并从该文件写入字符串。Try 块后面是 Catch 块,该块捕捉 Try 块产生的任何异常。
using System;
using System.IO;
using System.Security.Permissions;
// Security permission request.
[assembly:FileIOPermissionAttribute(SecurityAction.RequestMinimum, All = @"d://data.txt")]
public class ProcessFile {
public static void Main() {
try {
StreamReader sr = File.OpenText("data.txt");
Console.WriteLine("The first line of this file is {0}", sr.ReadLine());
}
catch(Exception e) {
Console.WriteLine("An error occurred: '{0}'", e);
}
}
}

在 Catch 块中使用特定异常

发生异常时,异常沿堆栈向上传递,每个 Catch 块都有机会处理它。Catch 语句的顺序很重要。将针对特定异常的 Catch 块放在常规异常 Catch 块的前面,否则编译器可能会发出错误。确定正确 Catch 块的方法是将异常的类型与 Catch 块中指定的异常名称进行匹配。如果没有特定的 Catch 块,则由可能存在的常规 Catch 块捕捉异常。
下面的代码示例使用 Try/Catch 块捕捉 InvalidCastException。该示例创建一个名为 Employee 的类,它带有一个属性:职员级别 (Emlevel)。PromoteEmployee 方法取得对象并增加职员级别。将 DateTime 实例传递给 PromoteEmployee 方法时,发生 InvalidCastException。
using System;
public class Employee
{
//Create employee level property.
public int Emlevel
{
get
{
return(emlevel);
}
set
{
emlevel = value;
}
}
int emlevel;
}

public class Ex13
{
public static void PromoteEmployee(Object emp)
{
//Cast object to Employee.
Employee e = (Employee) emp;
// Increment employee level.
e.Emlevel = e.Emlevel + 1;
}

public static void Main()
{
try
{
Object o = new Employee();
DateTime newyears = new DateTime(2001, 1, 1);
//Promote the new employee.
PromoteEmployee(o);
//Promote DateTime; results in InvalidCastException as newyears is not an employee instance.
PromoteEmployee(newyears);
}
catch (InvalidCastException e)
{
Console.WriteLine("Error passing data to PromoteEmployee method. " + e);
}
}
}

try-catch 中 try块中 return执行问题

虽然实际开发中不会遇到这样的情况,但是笔试面试时有关异常经常会问到如下情况: public class ExceptionTest5 { public void metho...

Java try/catch/finally代码块中加入return后的执行顺序问题

finally可以分两方面理解 1.执行时机问题。finally总会执行(除非是System.exit()),正常情况下在try后执行,抛异常时在catch后面执行 2.返回值问题。可以认...

try~catch~finally中关于return的问题

  • 2015年07月08日 15:32
  • 399B
  • 下载

关于使用多个 catch 语句捕获多个异常问题

今天看到理工大学的JAVA试题:     当使用多个 catch 语句捕获多个异常时, Java 规定捕获 Exception 的 catch 语句必须排在最后,如下所示:     ...
  • e_wsq
  • e_wsq
  • 2013年09月08日 21:13
  • 1831

MyEclipse中的一些问题

  • 2014年10月25日 14:41
  • 4KB
  • 下载

java开发中的一些问题

  • 2012年12月27日 10:45
  • 76KB
  • 下载

关于JAVA的try catch finally的return返回值问题

转载自:《http://blog.csdn.net/exsuns/article/details/5217669》 [java] view plaincopy class Test...
  • bubaxiu
  • bubaxiu
  • 2015年01月18日 19:46
  • 3149

FLAC&FLAC3D应用中的一些问题

  • 2013年09月13日 11:27
  • 2.67MB
  • 下载

oracle一些问题的文档

  • 2014年11月21日 13:35
  • 88KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于Catch块的一些问题
举报原因:
原因补充:

(最多只允许输入30个字)