[gram.except]

# Annex A (informative) Grammar summary [[gram]](./#gram)

## A.12 Exception handling [gram.except]

[try-block:](except.pre#nt:try-block "14.1 Preamble [except.pre]")  
try [*compound-statement*](stmt.block#nt:compound-statement "8.4 Compound statement or block [stmt.block]") [*handler-seq*](except.pre#nt:handler-seq "14.1 Preamble [except.pre]")

[function-try-block:](except.pre#nt:function-try-block "14.1 Preamble [except.pre]")  
try [*ctor-initializer*](class.base.init#nt:ctor-initializer "11.9.3 Initializing bases and members [class.base.init]")opt [*compound-statement*](stmt.block#nt:compound-statement "8.4 Compound statement or block [stmt.block]") [*handler-seq*](except.pre#nt:handler-seq "14.1 Preamble [except.pre]")

[handler-seq:](except.pre#nt:handler-seq "14.1 Preamble [except.pre]")  
[*handler*](except.pre#nt:handler "14.1 Preamble [except.pre]") [*handler-seq*](except.pre#nt:handler-seq "14.1 Preamble [except.pre]")opt

[handler:](except.pre#nt:handler "14.1 Preamble [except.pre]")  
catch ( [*exception-declaration*](except.pre#nt:exception-declaration "14.1 Preamble [except.pre]") ) [*compound-statement*](stmt.block#nt:compound-statement "8.4 Compound statement or block [stmt.block]")

[exception-declaration:](except.pre#nt:exception-declaration "14.1 Preamble [except.pre]")  
[*attribute-specifier-seq*](dcl.attr.grammar#nt:attribute-specifier-seq "9.13.1 Attribute syntax and semantics [dcl.attr.grammar]")opt [*type-specifier-seq*](dcl.type.general#nt:type-specifier-seq "9.2.9.1 General [dcl.type.general]") [*declarator*](dcl.decl.general#nt:declarator "9.3.1 General [dcl.decl.general]")  
[*attribute-specifier-seq*](dcl.attr.grammar#nt:attribute-specifier-seq "9.13.1 Attribute syntax and semantics [dcl.attr.grammar]")opt [*type-specifier-seq*](dcl.type.general#nt:type-specifier-seq "9.2.9.1 General [dcl.type.general]") [*abstract-declarator*](dcl.name#nt:abstract-declarator "9.3.2 Type names [dcl.name]")opt  
...

[noexcept-specifier:](except.spec#nt:noexcept-specifier "14.5 Exception specifications [except.spec]")  
noexcept ( [*constant-expression*](expr.const#nt:constant-expression "7.7 Constant expressions [expr.const]") )  
noexcept
