泛化catch

using System;
using System.Collections.Generic;
using System.Text;

namespace ExceptionHandling
{
    class Program
    {
        static int Main(string[] args)
        {
            string firstNamne;
            string ageText;
            int age;
            int result = 0;

            while (true)
            {
                
                Console.WriteLine("Enter your first name: ");
                firstNamne = Console.ReadLine();

                Console.Write("Enter your age: ");
                ageText = Console.ReadLine();

                Console.Clear();

                try
                {
                    age = int.Parse(ageText);
                    Console.WriteLine(
                        "Hi{0}! You are {1} months old.", firstNamne, age * 12);
                }
                catch (FormatException)
                {
                    Console.WriteLine(
                        "The age entered,{0},is not valid.", ageText);
                    result = 1;
                }
                catch (Exception exception)
                {
                    Console.WriteLine(
                        "Unexcepected error: {0}", exception.Message);
                    result = 1;
                }
                catch
                {
                    Console.WriteLine("Goodbye {0}", firstNamne);
                }

                finally
                {
                    Console.WriteLine("Goodbye {0}", firstNamne);
                }
            }
            
            return result;
        }
    }
}
    泛化catch可以指定一个不获取任何参数的catch块,没有指定数据类型的catch块称为泛化catch块(generic catch block),它等价于获取object数据类型的catch块,例如catch(object exception){...}。由于所有类最终是从object派生,所以没有数据类型的catch块必须出现在最后。

    泛化catch块很少使用,因为没有办法捕捉有关异常的任何信息。除此之外,C#不允许引发object类型的一个异常,只有使用C++这样的语言写的库才允许任意类型的异常。

转载于:https://www.cnblogs.com/cwbo-win/archive/2012/12/25/2832640.html

在项目中,我们可以使用try-catch语句来捕获和处理可能发生的异常。通过捕获异常,我们可以在发生异常时采取适当的措施,例如记录错误信息、恢复应用程序状态或向用户显示错误消息。 以下是一个示例,展示了在项目中使用try-catch语句抛出异常的常见情况: ```java public void processFile(String fileName) { try { // 尝试打开文件并进行处理 File file = new File(fileName); // 执行文件处理操作 // ... } catch (FileNotFoundException e) { // 处理文件未找到异常 System.err.println("文件未找到:" + e.getMessage()); // 可以进行其他适当的处理,例如创建文件、提示用户重新输入等 } catch (IOException e) { // 处理IO异常(读写文件时可能发生的异常) System.err.println("IO异常:" + e.getMessage()); // 可以进行其他适当的处理,例如关闭资源、恢复应用程序状态等 } catch (Exception e) { // 处理其他类型的异常(未被上面的catch块捕获到的异常) System.err.println("发生了未知异常:" + e.getMessage()); // 可以进行其他适当的处理,例如记录错误信息、提示用户等 } } ``` 在上面的代码中,processFile方法尝试打开并处理一个文件。如果文件未找到,将抛出FileNotFoundException;如果在文件处理过程中发生IO异常,将抛出IOException。catch块可以捕获到这些异常,并根据需要进行适当的处理。 请注意,通常建议将具体的异常类型放在较前面的catch块中,将更泛化的异常类型(例如Exception)放在较后面的catch块中,以便更精确地处理异常。 希望这个示例能帮助你理解在项目中如何使用try-catch语句来抛出和处理异常。如果你有任何其他问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值