Snippets

Михаил Беляков 050. Блоки try... catch

Created by Михаил Беляков last modified mabel
1
2
3
4
5
6
7
*.mp3
*.json
*.tgz
*.sh
*.mkv
*.lst

/*
 * Чтобы продемонстрировать аварийную ситуацию, 
 * попробуем обратиться к несуществующему файлу.
 */ 

const fs = require('fs')

let buf = fs.readFileSync('absent_file_235434534534.dat')

consol.log(12345)
/*
 * Перехватим исключительную (аварийную) ситуацию
 * с помощью блоков try и catch.
 */ 

const fs = require('fs')

try{
    let buf = fs.readFileSync('absent_file_235434534534.dat')
}
catch(e){
    //console.log(e)
}

console.log(12345)
/*
 * Объект-исключение, передаваемый в блок catch,
 * зачастую содержит подробную и даже избыточную
 * информацию. Иногда достаточно краткой характеристики,
 * получаемой с помощью метода toString.
 */ 

const fs = require('fs')

try{
    let buf = fs.readFileSync('absent_file_235434534534.dat')
}
catch(e){
    console.log(e.toString())
}
/*
 * Блок finally служит для того, чтобы обработать
 * оба случая: и тот, когда блок try выполнен с ошибкой,
 * и тот, когда всё прошло нормально.
 */ 

const fs = require('fs')

try{
    let buf = fs.readFileSync('absent_file_235434534534.dat')
    //let buf = 123
}
catch(e){
    console.log(e.toString())
}
finally{
    console.log('В любом случае мы здесь.')
}
/*
 * Программист может разрабатывать 
 * собственные исключения для обработки специфических ситуаций. 
 * В большинстве случаев достаточно задействовать ключевое слово 
 * throw и строку с описанием ситуации.
 */ 

const sayHello = (word)=> {
    if(!word) throw 'Не указано слово'
    if(!/^[A-Z]/.test(word)) throw 'Слово должно начинаться с заглавной буквы'
    console.log(`Hello, ${word}!`)
}

try{
    //sayHello()
    //sayHello('world')
    sayHello('World')
}
catch(e){
    console.log(e)
}

Блоки try... catch позволяют перехватывать аварийные ситуации (исключения), возникающие в программе, чтобы максимально корректно преодолеть их. С помощью ключевого слова throw можно самостоятельно возбуждать исключения в ситуациях, которые с точки знерия семантики предметной области являются недопустимыми.

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.