- 01Setting Up (What You'll Need)
- 02Creating Variables
- 03Conditionals (if Statements)
- 04Loops (for Statements)
- 05Creating Functions
- 06Working with Arrays
- 07Working with Objects
- 08Loops (while Statements)
- 09Working with Strings
- 10Using Classes (Object-Oriented Programming)
- 11Error Handling (try...catch)
- 12Destructuring and the Spread Syntax
- 13Async Code (Promise / async & await)
- 14Advanced Array Methods (filter and reduce)
- 15The switch Statement
- 16The Ternary Operator
- 17Inheritance (Extending Classes)
- 18How to Write Comments
- 19Logical Operators (AND, OR, NOT)
- 20Constants (Making Read-Only Values with const)
- 21Splitting and Joining Strings (split and join)
- 22Null-Safe Syntax (?? and ?.)
- 23Searching Arrays and Collections (includes and find)
- 24Transforming Arrays with map
- 25Two-Dimensional Arrays (Table-Shaped Data)
- 26Building a Custom Error Class
- 27Default Arguments (Setting Initial Values for Parameters)
- 28Using Set (Collections)
- 29Verifying Correctness with assert (Your First Step Into Testing)
- 30Higher-Order Functions (Passing a Function as an Argument)
- 31Stacks and Queues (Basic Data Structures)
- 32The Basics of Type Conversion (Casting)
- 33Introduction to Regular Expressions (Pattern Matching)
- 34The Binary Search Algorithm
- 35Building a Caesar Cipher (a Letter-Shifting Cipher)
- 36Understanding How Bubble Sort Works
- 37Building and Displaying Dates (Basic Year/Month/Day Operations)
- 38Writing Several Unit Tests Together (Multiple Test Cases)
- 39Speeding Up Calculations with Memoization (Caching)
- 40Normalizing Strings (trim and Case Unification)
- 41The Difference Between Shallow Copy and Deep Copy
- 42The Basics of Enums (Enumerated Types)
- 43Flattening Arrays (flatten)
- 44Reversing a String and Checking for a Palindrome
- 45Pairing Up Two Arrays (a zip Operation)
- 46Rounding Numbers (floor, ceil, and round)
- 47Multi-Line Strings (Template Literals)
- 48Returning Multiple Values from a Function (Array Destructuring)
- 49Finding the GCD and LCM (the Euclidean Algorithm)
- 50Formatting Numbers (Digit Alignment and Decimal Precision)
- 51Cleanup Processing with try/catch/finally
- 52Writing Type-Agnostic, General-Purpose Functions
- 53The Basics of Map (an Object for Key-Value Pairs)
- 54Generating Random Numbers
- 55Bitwise Operations (AND, OR, XOR, and Shift Operations)
- 56Using static (Static Class Properties and Methods)
- 57Waiting a Fixed Amount of Time (setTimeout and await)
- 58Watch Out for Floating-Point Rounding Error
- 59Transforming and Flattening at Once with flatMap()
- 60FizzBuzz (the Classic Practice Problem)
- 61Checking Whether a Number Is Prime
- 62Set Operations with Set (Union, Intersection, and Difference)
- 63Converting Number Bases (Binary and Hexadecimal)
- 64Checking That Brackets Match (an Application of Stacks)
- 65Checking for an Anagram
- 66Checking Whether a Year Is a Leap Year
- 67Converting Temperature (Celsius ⇄ Fahrenheit)
- 68Finding the Prime Factorization
- 69[Applied] Build a Simple To-Do List Tool
Error Handling (try...catch)
In this lesson you'll learn error handling with JavaScript's try...catch, so you can keep your program running even when unexpected problems occur. This is for people searching "JavaScript try catch usage" or "JavaScript error handling."
Problems can happen while a program is running (errors can occur). Even if an error occurs inside a try block, you can catch it with a catch (error) { ... } block and prevent the whole program from stopping. It's an insurance-like mechanism: "decide in advance what to do instead, just in case something fails." You can also deliberately trigger an error yourself with throw new Error(message).
The sample code raises an error with throw inside the divide function if you try to divide by zero. Calling divide(10, 0) inside the try block throws the error, and the catch block catches it and displays error.message (the error message). Also important: the rest of the try block is skipped the moment the error occurs.
A common beginner stumbling block is that errors occurring outside the try block can't be caught by catch. Code that might throw an error needs to be properly enclosed in try. Also, catching an error with catch and doing nothing with it (swallowing it silently) should be avoided, since it makes it impossible to figure out the cause of a problem later.
In real development, unpredictable trouble is bound to happen — user input mistakes, network failures, error responses from an external API. Proper error handling is an essential skill for showing users an appropriate message instead of a broken error screen, and for building an app that runs reliably.
Inside a catch block, you can reference not just the error object's .message but also its .name (the error type), letting you respond differently depending on the kind of error. Sorting out ahead of time which kinds of errors you expect lets you write more thoughtful error handling.
To deliberately raise an error, you write something like throw new Error("message"). Besides Error, there are also classes for specific error kinds like TypeError and RangeError, which allow for more detailed error classification.
💡 Anything passed to console.log() appears in the output below.
