我是 try-catch 的新手,最近一直在重构大量代码以跟上DRY的原则。但是,我仍然有一些我无法完全解决的场景。例如,在我正在开发的多语言应用程序中,我想让用户通过在 URL 的查询字符串中传递两个字母的国家代码来设置界面语言,或者让应用程序使用默认语言,如果用户没有请求:
// Which language shall we use?
$language = new language();
if(isset($_GET['language_code'])){
try {
$language->set_by_language_code($_GET['language_code']);
} catch(e_language_not_found $e){
try {
$language->set_default_language();
// TODO - use 'e_language_not_found' to display an error in the default language
} catch(Exception $e){
exit('No default language found');
}
}
} else {
try {
$language->set_default_language();
} catch(Exception $e){
exit('No default language found');
}
}
set_default_language()
问题是当用户根本没有请求任何语言时,我已经重复了该块。如何重构代码以便在应用程序中只调用一次该方法?谢谢!