我是新來的try-catch並且最近重構了很多代碼以跟上DRY的原理。但是,我仍然有一些我無法解決的情況。例如,在我正在處理的多語言應用程序中,我想讓用戶通過在URL的查詢字符串中傳遞雙字母國家代碼來設置界面語言,或者讓應用程序使用默認語言if用戶沒有要求一個:如何重構這個嵌套的try-catch
// 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()
塊當用戶沒有要求任何語言都沒有。我如何重構代碼,以便在應用程序中只調用一次該方法?謝謝!
我認爲這個問題會更適合**代碼審查Beta版**:http://codereview.stackexchange.com/ – ComFreek 2013-02-27 22:35:33
如果用戶沒有請求任何語言我猜language_code將不會被設置爲第二個set_default_language()將被調用,爲了解決這個問題,您可以在while語言設置中添加另一個條件。但是我不明白你的問題必須與嵌套try-catch – 2013-02-27 22:36:03