如何在不使用try catch的情况下验证事件日志写入权限?我已阅读以下问题:Checking Event Log writing Permissions without writing an entry,但答案建议使用EventLogPermissionAttribute
。据我所知,我不能用它来验证权限,它只是在没有请求的权限时抛出一个Exception
。验证事件日志写入权限
我的代码现在看起来是这样的:
public void WriteMessage(string message)
{
try {
var trace = new TraceSource("MySource");
trace.TraceEvent(TraceEventType.Information, 1000, message);
} catch() {
var log = LogManager.GetLogger<MyClass>();
log.Info(message);
}
}
不过,我想是这样的:
public void WriteMessage(string message)
{
if(EventLogPermission("MySource"))
{
var trace = new TraceSource("MySource");
trace.TraceEvent(TraceEventType.Information, 1000, message);
} else {
var log = LogManager.GetLogger<MyClass>();
log.Info(message);
}
}
Ofcourse在结束它并没有太大的差别,但使用尝试捕捉因为逻辑只是感觉肮脏。
我寻找一个非try-catch选项,但还没有找到替代方案。所以,试一下就可以了,除此之外,如果可能的话,这不应该被视为可接受的程序流程。 – Hans
另外,在某些语言中(例如python),在某些情况下,异常是处理某些*异常*条件的首选方式。这只是一种不同的方法:LBYL(看你跳跃之前)vs EAFP(比容许更容易要求原谅)。 – J0HN
谢谢@ J0HN从不同的角度获得不同的观点总是很好的。 –