Page 197 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 197

адрес электронной  почты  как  строку.  Если  это не так,  она возвращает экземпляр
       объекта  r ror. Для простоты будем считать нечто, содержащее символ  , допусти­
                                                                         @
               E
                                               1
       мым адресом электронной почты (см. главу  7 ) .
                                i
       function  validateEmail  ( ema l )
           return  email . m atch ( / @ / )   ?
                  i
               ema l   :
               new  Еrrоr ( ' Ошибочный  email :  $ { e mail } ' ) ;

          Чтобы определить, был ли возвращен экземпляр объекта  r ror, мы можем ис­
                                                                E
       пользовать оператор  typeof. Предоставленное нами сообщение об ошибке  будет
       присвоено свойству me s age.
                            s
                i
       const  ema l   =  " j ane@doe . c om" ;
       const  validatedEmail  =  validateEmail ( e ma l ) ;
                                              i
       i f (validatedEma l   instanceof  Error )  {
                      i
           consol . error ( ' Oшибкa :  $  { v l i datedEmai l . m essage } ) ;
                 e
                                    a
         else  {
           соnsоlе . l о ( ' Корректный  email :  $ { validatedEmail }  ' ) ;
                     g
          Хотя  это  вполне допустимый  и  полезный  способ  использования  экземпляра
               E
       объекта  r ror, он чаще используется в  процессе обработки исключений, который
       мы рассмотрим далее.


                      и
       Обработка  с кпюче н и й   с и с попьзован и е м
          о
       бп к ов    try и  с   а   tch
          Для обработки исключений используется конструкция операторов  try  . .   catch.
                                                                          .
       Идея в том, что осуществляется "попытка" (try) что-то сделать, и если при этом произой­
                                                                                a
       дет какое-либо исключение, оно будет "перехвачено" (catch). Функция validateEm i l
       в нашем предыдущем примере обрабатывает ожидаемую ошибку, когда некто пропу­
       скает символ @  в адресе электронной почты, но есть также возможность возникнове­
       ния и непредвиденной ошибки: непутевый программист может присвоить переменной
       em i l   нечто отличное от строки. Как следует из предыдущего примера, присвоение пе­
         a
       ременной ema l   значения null, числа или объекта (чего угодно, кроме строки) приводит
                   i
       к ошибке. В результате программа сразу же прекращает свое выполнение, что весьма
       недружественно по отношению к пользователю. Чтобы обезопасить себя от непредви­
       денной ошибки мы можем поместить свой код в блок оператора try  . .   catch.
                                                                   .
       const  email  =  null ;    1 1   упс
       try  {



       1 9 8    Глава 1 1 .   Исключения и обработка ошибок
   192   193   194   195   196   197   198   199   200   201   202