我在我正在使用的框架中尝试捕获当触发捕获时它显示错误报告页面,此报告页面中的一件事是它显示一个菜单,其中时间来自数据库< / p>
我认为它的作用是,如果可以连接数据库,我会在catch中添加另一个try catch,类似这样的
try
{
code that would throw an excpetion
}
catch(Exception $e)
{
try
{
connect to database
run query
log error in database
output screen using database data
}
catch(Exception $e)
{
output screen using static html
}
}
这样,如果异常是数据库连接错误,它将使用静态html输出而不是从数据库数据生成的动态输出
然而,当我导致数据库错误(删除所需的表)时,我的静态html不起作用
我想知道是否有可能尝试捕获工作在捕获或天气它是框架(我使用magento),我问这个,因为如果有可能,那么我会花时间搞清楚框架阻止我的原因
答案 0 :(得分:1)
是的,可以在catch块中放置一个try / catch块。
然而,根据您的描述,听起来您希望更多“智能”异常捕获。你可以这样做:
try {
// some operations including something with a database
}
catch (DatabaseException $e) {
// the exception thrown by the code above was a DatabaseException
// output some error message without using the database
}
catch (Exception $e) {
// the exception thrown by the code above could have been any type of exception EXCEPT a DatabaseException
// so you can still try to use the database to compose the error message
}
请注意,任何可以抛出异常的内容在从catch块运行时也会抛出这些异常。例如,当try块在之前抛出异常它到达任何数据库代码时,在处理原始的非数据库异常时仍然会发生数据库异常。