面试题答案
一键面试1. 自定义异常类设计思路
在C#中,自定义异常类通常继承自Exception
类。MyBusinessException
可以包含一些属性来提供更多关于异常的特定信息,比如错误代码、错误描述等。方法方面,除了继承自Exception
类的构造函数,还可以根据需要添加自定义方法来辅助处理异常。
2. 代码示例
// 自定义异常类
public class MyBusinessException : Exception
{
// 自定义属性,用于存储错误代码
public int ErrorCode { get; set; }
// 构造函数,接收错误信息和错误代码
public MyBusinessException(string message, int errorCode) : base(message)
{
ErrorCode = errorCode;
}
// 重写ToString方法,提供更详细的异常信息
public override string ToString()
{
return $"ErrorCode: {ErrorCode}, Message: {Message}";
}
}
public class BusinessLogic
{
// 模拟业务方法,可能会抛出自定义异常
public void ProcessData(int value)
{
if (value < 0)
{
// 抛出自定义异常
throw new MyBusinessException("Value cannot be negative", 1001);
}
Console.WriteLine($"Processed value: {value}");
}
}
class Program
{
static void Main()
{
BusinessLogic logic = new BusinessLogic();
try
{
logic.ProcessData(-5);
}
catch (MyBusinessException ex)
{
// 捕获自定义异常并处理
Console.WriteLine($"Caught MyBusinessException: {ex.ToString()}");
}
}
}
3. 代码解释
- 自定义异常类
MyBusinessException
:- 继承自
Exception
类,具备异常的基本功能。 ErrorCode
属性用于存储特定业务错误代码。- 构造函数接收错误信息和错误代码,调用基类构造函数传递错误信息,并初始化
ErrorCode
。 - 重写
ToString
方法,返回包含错误代码和错误信息的详细字符串。
- 继承自
BusinessLogic
类:ProcessData
方法模拟业务逻辑。当传入的值小于0时,抛出MyBusinessException
异常,错误信息为“Value cannot be negative”,错误代码为1001。
Program
类:- 在
Main
方法中创建BusinessLogic
实例。 - 使用
try - catch
块捕获MyBusinessException
异常。如果捕获到异常,打印详细的异常信息。
- 在
4. 优势
- 代码维护性:自定义异常类使得错误处理逻辑更集中,当业务需求变化时,只需在自定义异常类及其抛出和捕获处修改代码,而不会影响系统其他部分。
- 可读性:自定义异常类名清晰地表明异常与业务相关,阅读代码的人能快速了解异常的性质和来源。例如
MyBusinessException
明确表示这是业务逻辑导致的异常。 - 错误处理灵活性:通过添加自定义属性(如
ErrorCode
),可以提供更丰富的错误信息,在捕获异常时可以根据错误代码进行更细致的处理,而不仅仅依赖于通用的错误信息。