假設我有一個WebCrawler
類。它可能遇到幾個錯誤。我應該如何向上傳播錯誤?引發自定義異常,返回常量或返回符號?爲什麼?
使用異常:
class WebCrawler
class UrlBadFormatError < StandardError; end
class PageNotFoundError < StandardError; end
class UnauthorizedError < StandardError; end
def crawl(url)
if(! url =~ /some_format/)
raise UrlBadFormatError
response = get(url)
if(response.code == 404)
raise PageNotFoundError
if(response.code == 403)
raise UnauthorizedError
...
end
end
或常量:
class WebCrawler
URL_BAD_FORMAT = 1
PAGE_NOT_FOUND = 2
UNAUTHORZIED = 3
def crawl(url)
if(! url =~ /some_format/)
return URL_BAD_FORMAT
response = get(url)
if(response.code == 404)
return PAGE_NOT_FOUND
if(response.code == 403)
return UNAUTHORZIED
...
end
end
或符號:
class WebCrawler
def crawl(url)
if(! url =~ /some_format/)
return :url_bad_format
response = get(url)
if(response.code == 404)
return :page_not_found
if(response.code == 403)
return :unauthorized
...
end
end
這是最好的?或者它取決於什麼?
我不認爲你是否使用IDE或者不應該考慮* how *或*你編程的內容。 – 2012-03-04 20:47:16
@AndrewMarshall這是一個觀點,但它確實很重要。 – 2012-03-04 20:52:27
除了可能的風格/文檔約定(實際上並不影響文字代碼),否則不應該。作爲頭等公民的例外情況(我認爲你的意思是課程)是真實的,不管你是否使用IDE--使用IDE都不會改變這種情況。 – 2012-03-04 20:59:50