查看“︁Template:TryError/doc”︁的源代码
←
Template:TryError/doc
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{NoteTA/MediaWiki}}{{Documentation subpage}}<!-- 在本行下編輯模板說明 --> {{High-use|10131}} == 概要 == 本模板實現了try...catch...finally的結構 而若用<nowiki>{{#iferror:}}</nowiki>無法根據錯誤種類來做處不同處理,而若用嵌套解析器,對於部分高開銷操做是不利的,因此提供一個類似程式碼的方式來實現。而考量到[[:en:Template:Try]]模板存在,因此仔不影響使用的情況以TryError命名。 == 參數及使用方法 == <nowiki>{{TryError</nowiki> |<nowiki><可能有錯誤的維基代碼></nowiki> |<nowiki>catch(<錯誤的class>)=<發生對應錯誤的處置></nowiki> |<nowiki>catch=<發生通用錯誤的處置></nowiki> |finally=<無論是否錯誤都會顯示的維基代碼> <nowiki>}}</nowiki> === 模板參數 === {{TemplateDataHeader}} <templatedata> { "params": { "1": { "label": "可能有腳本錯誤的維基代碼", "description": "用來處理腳本錯誤的維基代碼", "example": "{{#expr:0/0}}", "type": "string", "default": null, "autovalue": null, "required": false }, "catch": { "label": "代碼出現其他錯誤的錯誤訊息", "description": "若該代碼出現其他錯誤時才會輸出該錯誤訊息", "example": "出現不明錯誤", "type": "string", "default": null, "autovalue": null, "required": false }, "catch(類型)": { "label": "代碼出現特定類型錯誤的錯誤訊息", "description": "若該代碼出現某個指定類型的錯誤時才會輸出該錯誤訊息,而類型應該在括號裡指定", "example": "出現Lua腳本錯誤", "type": "string", "default": null, "autovalue": null, "required": false }, "finally": { "label": "不論代碼是否有錯都一定會出現的訊息", "description": "若該代碼不論是否有錯都一定會出現的內容", "example": "內容已除錯", "type": "string", "default": null, "autovalue": null, "required": false } }, "description": "本模板用來輸出錯誤訊息到標準輸出,實現了try...catch...finally的結構", "format": "block" } </templatedata> == 範例 == *無錯誤的維基代碼搭配try...catch: <nowiki>{{TryError</nowiki> |<nowiki>無錯誤的維基代碼</nowiki> |<nowiki>catch=</nowiki> <nowiki>}}</nowiki> {{TryError |無錯誤的維基代碼 |catch= }} ---- *移除有錯誤的維基代碼: <nowiki>{{TryError</nowiki> <nowiki>|這些{{#expr:0/0}}有錯誤</nowiki> <nowiki>|catch={{{no error}}}</nowiki> <nowiki>}}</nowiki> ::輸出: :::{{TryError |這些{{#expr:0/0}}有錯誤 |catch={{{no error}}} }} ---- *有錯誤的維基代碼: <nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> ::輸出: :::{{#expr:0/0}}{{link-wd|Q0/0}} ---- *有錯誤的維基代碼搭配try...catch: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |<nowiki>catch=</nowiki> <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch= }} ---- *try...catch...finally <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}{{User 超電磁炮|level=1/0|name=零除錯誤|call=除錯}}{{Topic:Xo1mzbojtxmiusgl}}{{模板1}}</nowiki> |<nowiki>catch=發生{{{message}}}錯誤!</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}}{{User 超電磁炮|level=1/0|name=零除錯誤|call=除錯}}{{Topic:Xo1mzbojtxmiusgl}}{{模板1}} |catch=發生{{{message}}}錯誤! |finally=結束 }} ---- *try並catch 「scribunto-error」錯誤和一般catch: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |<nowiki>catch(scribunto-error)=發生{{{message}}}錯誤!</nowiki> |<nowiki>catch=發生{{{message}}}錯誤!</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch(scribunto-error)=發生{{{message}}}錯誤! |catch=發生{{{message}}}錯誤! |finally=結束 }} ---- *try並提供空的一般catch: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |catch= |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch= |finally=結束 }} ---- *try並throw: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |<nowiki>catch(scribunto-error)={{{throw}}}</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch(scribunto-error)={{{throw}}} |finally=結束 }} ---- *try並throw其他錯誤: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |<nowiki>catch(scribunto-error)={{參數|throw|foo(throw其他錯誤)}}</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch(scribunto-error)={{參數|throw|foo(throw其他錯誤)}} |finally=結束 }} ---- *巢狀try...catch: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}{{TryError|{{#expr:0/0}}|catch={{參數|throw|foo(throw其他錯誤)}} }}</nowiki> |<nowiki>catch(foo)=接到foo錯誤</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}}{{TryError|{{#expr:0/0}}|catch={{參數|throw|foo(throw其他錯誤)}} }} |catch(foo)=接到foo錯誤 |finally=結束 }} ---- *未能提供匹配的錯誤catch: <nowiki>{{TryError</nowiki> |<nowiki>{{#expr:0/0}}{{link-wd|Q0/0}}</nowiki> |<nowiki>catch(foo)=接到foo錯誤</nowiki> |finally=結束 <nowiki>}}</nowiki> ::輸出: :::{{TryError |{{#expr:0/0}}{{link-wd|Q0/0}} |catch(foo)=接到foo錯誤 |finally=結束 }} == 技術限制 == 與#iferror一樣,本模板無法處理來自擴展標籤(如[[Help:数学公式|<nowiki><math>...</math></nowiki>]])的錯誤 <nowiki>{{#iferror:<math>\你好</math>}}</nowiki> ::輸出 :::{{#iferror:<math>\你好</math>}} ---- <nowiki>{{TryError</nowiki> <nowiki>|<math>\你好</math></nowiki> <nowiki>|catch={{{no error}}}</nowiki> <nowiki>}}</nowiki> ::輸出 :::{{TryError |<math>\你好</math> |catch={{{no error}}} }} == 注意事项 == == 模板编辑说明 == == 參見 == <includeonly>{{Sandbox other||<!-- 本行下加入模板的分類 --> }}</includeonly>
该页面使用的模板:
Template:Documentation subpage
(
查看源代码
)
Template:High-use
(
查看源代码
)
Template:Link-wd
(
查看源代码
)
Template:NoteTA/MediaWiki
(
查看源代码
)
Template:TemplateDataHeader
(
查看源代码
)
Template:TryError
(
查看源代码
)
返回
Template:TryError/doc
。
导航菜单
个人工具
登录
命名空间
模板
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息