2018-08-09 23:51:12 +00:00
|
|
|
/**
|
|
|
|
* Copyright 2018 Google Inc. All rights reserved.
|
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
|
2021-04-12 13:57:05 +00:00
|
|
|
/**
|
|
|
|
* @public
|
|
|
|
*/
|
|
|
|
export class CustomError extends Error {
|
2021-10-04 06:18:03 +00:00
|
|
|
constructor(message?: string) {
|
2018-08-09 23:51:12 +00:00
|
|
|
super(message);
|
|
|
|
this.name = this.constructor.name;
|
|
|
|
Error.captureStackTrace(this, this.constructor);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-06-22 08:34:57 +00:00
|
|
|
/**
|
2022-06-27 07:24:23 +00:00
|
|
|
* TimeoutError is emitted whenever certain operations are terminated due to
|
|
|
|
* timeout.
|
2020-06-22 08:34:57 +00:00
|
|
|
*
|
|
|
|
* @remarks
|
2022-06-27 07:24:23 +00:00
|
|
|
* Example operations are {@link Page.waitForSelector | page.waitForSelector} or
|
|
|
|
* {@link PuppeteerNode.launch | puppeteer.launch}.
|
2020-06-22 08:34:57 +00:00
|
|
|
*
|
|
|
|
* @public
|
|
|
|
*/
|
2020-04-23 11:53:47 +00:00
|
|
|
export class TimeoutError extends CustomError {}
|
2022-06-15 10:09:22 +00:00
|
|
|
|
2021-10-04 06:18:03 +00:00
|
|
|
/**
|
|
|
|
* ProtocolError is emitted whenever there is an error from the protocol.
|
|
|
|
*
|
|
|
|
* @public
|
|
|
|
*/
|
|
|
|
export class ProtocolError extends CustomError {
|
|
|
|
public code?: number;
|
2022-01-31 15:16:32 +00:00
|
|
|
public originalMessage = '';
|
2021-10-04 06:18:03 +00:00
|
|
|
}
|
2022-06-15 10:09:22 +00:00
|
|
|
|
2021-04-06 08:58:01 +00:00
|
|
|
/**
|
|
|
|
* @public
|
|
|
|
*/
|
2022-06-15 10:09:22 +00:00
|
|
|
export interface PuppeteerErrors {
|
|
|
|
TimeoutError: typeof TimeoutError;
|
|
|
|
ProtocolError: typeof ProtocolError;
|
|
|
|
}
|
|
|
|
|
2021-04-06 08:58:01 +00:00
|
|
|
/**
|
2022-06-27 07:24:23 +00:00
|
|
|
* Puppeteer methods might throw errors if they are unable to fulfill a request.
|
|
|
|
* For example, `page.waitForSelector(selector[, options])` might fail if the
|
|
|
|
* selector doesn't match any nodes during the given timeframe.
|
|
|
|
*
|
|
|
|
* For certain types of errors Puppeteer uses specific error classes. These
|
|
|
|
* classes are available via `puppeteer.errors`.
|
|
|
|
*
|
|
|
|
* @example
|
|
|
|
* An example of handling a timeout error:
|
2022-08-12 12:15:26 +00:00
|
|
|
*
|
2022-07-01 11:52:39 +00:00
|
|
|
* ```ts
|
2022-06-27 07:24:23 +00:00
|
|
|
* try {
|
|
|
|
* await page.waitForSelector('.foo');
|
|
|
|
* } catch (e) {
|
|
|
|
* if (e instanceof puppeteer.errors.TimeoutError) {
|
|
|
|
* // Do something if this is a timeout.
|
|
|
|
* }
|
|
|
|
* }
|
|
|
|
* ```
|
|
|
|
*
|
2021-04-06 08:58:01 +00:00
|
|
|
* @public
|
|
|
|
*/
|
2022-06-27 07:24:23 +00:00
|
|
|
export const errors: PuppeteerErrors = Object.freeze({
|
2020-05-05 08:36:44 +00:00
|
|
|
TimeoutError,
|
2022-06-15 10:09:22 +00:00
|
|
|
ProtocolError,
|
|
|
|
});
|